* Complete documentation for environment variable-based OpenTelemetry configuration
* Address PR review comments
- Add Values column to OTLP Configuration table for consistency
- Fix New Relic endpoint to include required port 4318
- Add note about Datadog region-specific endpoints
Remove Teams Plan as an option for seat upgrades in the managing-members documentation. This aligns with the product strategy to drive customers toward Enterprise for any multiplayer/team scenarios.
Related: https://github.com/cline/cline-web/pull/256
Surface the actual read_file line window in chat summaries so users can see what context was added, while keeping manual approval and repeated same-file reads rendered accurately.
* feat(cli): unify update flow for cline and kanban
* fix(cli): only install kanban when update is available
* fix(cli): include cline and kanban versions in no-update message
- Add linux-aarch64 to TARGET_PLATFORMS in package-standalone.mjs so
better-sqlite3 prebuilt binaries are downloaded for this platform.
- Rename linux-arm64 to linux-aarch64 in download-ripgrep.mjs for
consistency with the JetBrains plugin naming convention (which uses
Java's os.arch value 'aarch64').
* fix(read_file): add stable line labels in act/plan
* prompt: clarify read_file line labels for replace_in_file
* Update prompt snapshots
* feat(read_file): add chunked reading with start_line/end_line parameters
Add optional start_line and end_line parameters to read_file so models
can read files in chunks instead of loading entire files into context.
Default limit is 1000 lines per read, with a continuation hint guiding
the model to paginate when needed.
Made-with: Cursor
* feat: align read_file line format with SDK while keeping superior chunking
- Change line format from 'L1:' to '1 |' to match SDK format
- Add proper NaN validation for start_line/end_line parameters
- Keep 1000-line chunking with continuation hints (superior to SDK)
- Update tool description and tests to reflect new format
- Add directory usage guardrail back to tool description
- Update replace_in_file prompt to reference new line format
This aligns the PR with the newer SDK design patterns while
preserving the superior chunking behavior that prevents context
overflow issues.
* fix: resolve duplicate step numbering in replace_in_file instructions
Fixes the duplicate step 5 issue when NOTEBOOK_INSTRUCTIONS is
concatenated with BASE_DIFF_INSTRUCTIONS for .ipynb files.
Changes notebook instructions to step 6 to avoid ambiguity.
* test: update unit test snapshots
* test: fix gemini3 tools snapshot
* test: regenerate gemini3 tools snapshot
* fix: preserve line ranges on cached file reads
* test: refresh gemini3 tools snapshot
* test: strengthen chunked read assertions
* fix: normalize inverted read file ranges
Remove fetchLastCommitDate() which made N individual Commits API calls
(one per prompt file), quickly exhausting the 60 req/hour unauthenticated
GitHub API limit. The service now makes only 1 rate-limited call (Git Tree
API) plus N CDN fetches (not rate-limited).
VSCode's webview doesn't reliably play VP9/WebM, while JetBrains'
JCEF lacks H.264 decoding. Restore the original H.264/MP4 video and
use HTML5 <source> elements with explicit MIME types so each platform
picks the format it supports:
<source src=... type="video/mp4" /> <!-- VSCode -->
<source src=... type="video/webm" /> <!-- JetBrains -->
Also:
- Restore .mp4 Git LFS tracking in .gitattributes
- Update CI LFS verification to check both files
- Add webm to JetBrains MIME type map (BrowserRequestHandler)
JetBrains IDEs use JCEF (Chromium Embedded Framework) for webviews,
which often does not include H.264 decoding due to licensing
restrictions. This causes the kanban demo video to fail to play.
Transcode the video from H.264/MP4 to VP9/WebM, which is a royalty-free
codec universally supported in Chromium derivatives. This also reduces
the file size from 3.6MB to ~900KB.
Updated all references:
- Source component import (ClineKanbanLaunchModal.tsx)
- Git LFS tracking (.gitattributes)
- CI workflow LFS checks (publish.yml, publish-nightly.yml)
The migration announcement didn't explain what Kanban is. Swap the
"run cline --tui" line for a one-liner describing the product so users
know what they're opting into. The --tui escape hatch is still
discoverable via the Exit menu item.
* refactor: replace hand-rolled YAML parser in refreshSkills with shared helper
The refreshSkills controller had its own line-by-line YAML parser that
only handled simple key: value pairs. Replace it with the shared
parseYamlFrontmatter helper already used by the skills discovery path.
Same output for name and description fields. The shared parser handles
edge cases (arrays, nested values, quoted colons) more robustly.
* refactor: inline parseYamlFrontmatter, remove redundant wrapper
Remove the parseFrontmatter wrapper since only `data` is used by
the caller. Inline the call directly at the use site.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: John Choi <johnchoi@MacBook-Pro.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: upgrade MiniMax default model to M2.7
- Add MiniMax-M2.7 and MiniMax-M2.7-highspeed to model list
- Set MiniMax-M2.7 as default model
- Keep all previous models as alternatives
- Update provider documentation
* fix: correct M2.7 cache pricing and update prompt caching docs
- Updated cacheReadsPrice from 0.015 to 0.03 for both MiniMax-M2.7 and
MiniMax-M2.7-highspeed to match M2.5 pricing (same cache read rate
across M2.x models)
- Updated prompt caching tip to explicitly mention highspeed variants
* fix: correct MiniMax model pricing to match official rates
- M2.7-highspeed/M2.5-highspeed/M2.1-lightning: $0.60/$2.40 (not $0.30/$1.20)
- M2.7 cache: reads $0.06/M (not $0.03), writes $0.375/M (not $0.0375)
- All models: cache writes $0.375/M (not $0.0375)
Ref: https://platform.minimax.io/docs/llms.txt
---------
Co-authored-by: PR Bot <pr-bot@minimaxi.com>
The Kanban launch-by-default feature (beb54a4) redirects bare `cline`
invocations to Kanban, which blocks all TUI tests that launch without
`--tui`. Adding the flag ensures tests reach the legacy TUI as expected.
* feat(cli): refresh welcome banner and kanban launcher
* feat(cli): launch kanban by default with migration view
* feat(cli): add kanban process lifecycle management
Detach the kanban child process on Unix so it gets its own process
group, forward signals to the group for graceful shutdown, and fall
back to SIGKILL after a 10s timeout. Resolves exit codes from signals
correctly (130 for SIGINT, 143 for SIGTERM).
* feat: add repeated tool call loop detection
Detect when the LLM calls the same tool with identical arguments
repeatedly, which wastes tokens without making progress. This is
the #1 active complaint in the Cline issue tracker (13+ open issues
including #9923, #9916, #9846, #9816).
Two-stage escalation:
- Stage 1 (3 identical calls): inject a warning nudging the LLM
to try a different approach
- Stage 2 (5 identical calls): trigger the existing
consecutiveMistakeCount escalation (asks user or fails in YOLO)
Detection uses JSON.stringify with a sorted key replacer for
deterministic comparison. Metadata params like task_progress
(which change every call even when actual tool arguments are
identical) are stripped from the comparison.
Complementary to fileReadCache, which deduplicates file content but
still allows the tool call to succeed and consume a turn. Loop
detection catches the repeated call pattern itself.
Changes:
- loop-detection.ts: shared helper (toolCallSignature, checkRepeatedToolCall)
- TaskState.ts: add lastToolParams, consecutiveIdenticalToolCount
- ToolExecutor.ts: call checkRepeatedToolCall in handleCompleteBlock
- responses.ts: add formatResponse.repeatedToolCall
- loop-detection.test.ts: 5 tests
Manually verified: CLI test confirms soft warning at call 3,
YOLO mode failure at call 5.
Refs: #9923, #9916, #9846, #9816
* fix: address review feedback on loop detection
- Change hardEscalation threshold from >= to === so it fires exactly
once at count 5, matching softWarning behavior
- Widen toolCallSignature param type to Partial<Record<string, string>>
to match actual block.params type from ToolExecutor
- Add negative boundary assertions to verify no false positives at
calls 0, 1, 3, 4
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: reset loop detection state when user continues after mistake_limit_reached
When hard escalation fired at count === 5 and the user clicked
"continue", consecutiveIdenticalToolCount was never reset. The count
would exceed 5 but === 5 never matched again, silently disabling
loop detection for the rest of the task.
Reset consecutiveIdenticalToolCount, lastToolName, and lastToolParams
alongside the existing consecutiveMistakeCount reset so the detector
fully re-arms after the user continues.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: John Choi <johnchoi@MacBook-Pro.local>
* fix: prevent OOM crash from globby's eager .gitignore scanning in listFiles
Replace globby's gitignore:true (which reads ALL .gitignore files in the
entire tree upfront, including inside gitignored directories) with
incremental .gitignore reading during BFS traversal.
In projects with large gitignored vendored dependencies containing many
nested repos, globby collects thousands of patterns, builds a massive
regex, and V8 runs out of memory during regex compilation (~488MB).
The fix reads .gitignore files only from directories the BFS actually
enters. Gitignored directories are never entered, so their .gitignore
files are never parsed and the pattern count stays small.
- Set gitignore:false, handle .gitignore ourselves
- Read root .gitignore in buildIgnorePatterns() to seed initial patterns
- Read subdirectory .gitignore lazily during globbyLevelByLevel BFS
- Accumulate patterns in currentIgnore so deeper levels respect them
- Add 4 tests: root patterns, file patterns, subdirectory .gitignore,
and OOM-prevention (no reading inside gitignored dirs)
* Code review followup
* Potential fix for code scanning alert no. 147: Incomplete string escaping or encoding
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
---------
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>