mirror of
https://github.com/cline/cline.git
synced 2026-09-14 02:29:17 +08:00
0c09df2855b357245ba660efb5c856e4b7ffa32a
114
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
28c548b3ee |
simplify package-npm script (#9067)
cli/package.json is already formatted correctly for publishing Co-authored-by: Max Paulus 🥪 <max@cline.bot> |
||
|
|
ac22d5d81a |
chore: add CLI type checking and caching to ci workflow (#9049)
* chore: add CLI type checking and caching to ci workflow - Added a new cache step for CLI dependencies in the GitHub Actions test workflow to improve build performance. - Included a step to install CLI dependencies using `npm ci`. - Updated the `ci:check-all` script in `package.json` to include CLI type checking. - Added a `cli:typecheck` script to handle type checking within the CLI directory. * Fix type and import issues for cli * Includes CI tests in test workflow * use npx npm-run-all * update ci:check-all * ci: skip npm ci steps on cache hit in test workflow Update the test workflow to conditionally run npm installation steps only when a cache hit is not found. This optimization reduces CI execution time by avoiding redundant dependency installations when the node_modules are already restored from cache. * ci: update cache keys and add dependency verification in test workflow Updated the cache keys for root, webview-ui, cli, and testing-platform dependencies by adding a version prefix (v1). This ensures a clean cache state and helps avoid potential corruption or mismatch issues. Additionally, added a verification step in the test job to log cache hit status and check for the presence of key dependencies like biome and globby. This helps diagnose issues where the cache might be restored but dependencies are not correctly available for subsequent steps. * update Verify and fix root dependencies * fix type check script * add isSettingsKey check * update settingskey set * apply feedback * npx * feat: flashing dot for streaming chat messages in CI (#9054) Introduce an ink-spinner to the DotRow component to provide visual feedback when messages are being streamed. This improves the CLI user experience by clearly indicating that a tool call or message is currently in progress. - Add `flashing` prop to `DotRow` component - Replace static dot with `toggle8` spinner when `flashing` is true - Update `ChatMessage` to pass `flashing` state based on `isStreaming` and `partial` message properties Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com> * ci: simplify dependency caching using built-in npm cache Replace manual actions/cache steps with setup-node's built-in npm caching feature across all workflow jobs. This change: - Removes redundant cache action steps for root, webview-ui, cli, and testing-platform dependencies - Uses setup-node's native `cache: 'npm'` option with `cache-dependency-path` to handle multiple package-lock.json files - Eliminates conditional installation steps based on cache hits - Reduces workflow complexity and maintenance overhead while maintaining caching functionality The built-in caching provides the same performance benefits with less configuration and better integration with the Node.js setup action. --------- Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com> |
||
|
|
11da3ee89e |
add windows to cli publish package json (#9063)
Co-authored-by: Max Paulus 🥪 <max@cline.bot> |
||
|
|
5308dedc81 |
fix: updating script documentation and removing unnecessary continue on error (#8769)
* updating script documentation and removing unnecessary continue on error * test update * removing comment * removing unnecessary line --------- Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com> |
||
|
|
6cff60b53b |
feat(cli): add TypeScript CLI (#9021)
* json mode support and model ID fix
* revert non cli-ts changes
* Support Image render
* support plain text
* implement logger
* Fix error not showing in Chat and use unified chat view
* feat(cli): add CLI-specific system prompt adjustments
- Add isCliEnvironment boolean to SystemPromptContext, computed from
platform check in task/index.ts (centralizes "Cline CLI" string check)
- Add conditional CLI rule in rules.ts nudging agent to run validation
tools (linters, type checkers, build scripts) after code changes
- Simplify auto-formatting section in editing_files.ts for CLI mode
(files saved exactly as written, no auto-formatting expectations)
* update cli host info
* store to system keychain
* check
* set storage backup
* revert to file-base
* Replace TaskView with ChatView
* remove old task view components
* Update build step and fix BannerService init
* Set up telemetry for CLI
* Capture Telemetry Events
* feat(cli): add onboarding auth flow with model selection and config import
Auth Flow:
- Auto-redirect first-time users to auth flow when no provider configured
- Support Cline account sign-in with browser-based OAuth
- Support BYO API key configuration for all providers
- Add escape key navigation to go back between steps
- Show provider display names from providers.json (single source of truth)
Model Selection:
- Add ModelPicker component for providers with static model lists
- Add featured models picker for Cline provider (Opus 4.5, GPT 5.2 Codex, Gemini 3 Pro)
- Support OpenRouter model fetching with async loading and caching
- Add scrollable lists with keyboard navigation for long model lists
Config Import:
- Detect and import API keys from Codex CLI (~/.codex/auth.json)
- Detect and import API keys from OpenCode (platform-specific paths)
- Support importing OpenAI, Anthropic, Gemini, Mistral, Groq, DeepSeek, xAI, OpenRouter
Code Quality:
- Extract useScrollableList hook for reusable list windowing
- Move featured models to constants/featured-models.ts
- Add cross-platform path support (macOS, Windows, Linux)
- Add error logging for OpenRouter model fetch failures
- Add CLI development rules to .clinerules/cli.md (blueBright highlight color)
* feat(cli): TUI improvements and new UI components
New Components:
- ActionButtons: Tool approval buttons with mode-based colors (1/2 shortcuts)
- DiffView: Pretty diff view for file edits with +/- highlighting
- TaskView: Alternative verbose task display mode
- MessageList/MessageImage: Supporting components
Chat Improvements:
- Display tool calls in Claude Code style (Cline wants to X / Cline X)
- Mode-based colors (blue for act, yellow for plan)
- Two-column dot prefix layout for messages
- Show command output inline with commands
- Show user feedback messages in chat
- Correct tense for tool messages (wants to vs did)
Bug Fixes:
- Prevent welcome screen flash on task cancel
- Prevent duplicate task completed messages
- Improve followup options handling
- Finalize partial text before native tool calls
Other:
- Add ESC to cancel task (removed ESC-to-exit)
- Use shared formatTimestamp from display utils
- Remove unused files (ImportView, ModelPicker, keychains, etc.)
* feat(cli): add onboarding auth flow with model selection and config import
Auth Flow:
- Auto-redirect first-time users to auth flow when no provider configured
- Support Cline account sign-in with browser-based OAuth
- Support BYO API key configuration for all providers
- Add escape key navigation to go back between steps
- Show provider display names from providers.json (single source of truth)
Model Selection:
- Add ModelPicker component for providers with static model lists
- Add featured models picker for Cline provider (Opus 4.5, GPT 5.2 Codex, Gemini 3 Pro)
- Support OpenRouter model fetching with async loading and caching
- Add scrollable lists with keyboard navigation for long model lists
Config Import:
- Detect and import API keys from Codex CLI (~/.codex/auth.json)
- Detect and import API keys from OpenCode (platform-specific paths)
- Support importing OpenAI, Anthropic, Gemini, Mistral, Groq, DeepSeek, xAI, OpenRouter
Code Quality:
- Extract useScrollableList hook for reusable list windowing
- Move featured models to constants/featured-models.ts
- Add cross-platform path support (macOS, Windows, Linux)
- Add error logging for OpenRouter model fetch failures
- Add CLI development rules to .clinerules/cli.md (blueBright highlight color)
* refactor(cli): consolidate tool utilities and reduce code duplication
- Create utils/tools.ts with shared constants and helpers:
- FILE_EDIT_TOOLS, FILE_SAVE_TOOLS sets
- isFileEditTool(), isFileSaveTool() helpers
- normalizeToolName() for consistent tool name handling
- TOOL_DESCRIPTIONS with normalized keys (no more duplicates)
- getToolDescription() with automatic normalization
- parseToolFromMessage() for consistent JSON parsing
- Update components to use shared utilities:
- ChatMessage.tsx: Remove 60+ line TOOL_DESCRIPTIONS duplicate, use shared
- ChatView.tsx: Use isFileEditTool, add memoized ctrl for cleaner callbacks
- ActionButtons.tsx: Use isFileSaveTool and parseToolFromMessage
- MessageRow.tsx: Use isFileEditTool
- Simplify ChatView.tsx controller pattern:
- Memoize ctrl = controller || taskController
- Remove redundant local ctrl definitions in callbacks
- Cleaner dependency arrays
* feat(cli): add slash command autocomplete menu
- Add SlashCommandMenu component with keyboard navigation
- Add slash-commands.ts utilities for query extraction and filtering
- Integrate into ChatView with proper state management
- Workflows shown first, then default commands
- Max 5 visible items with arrow key cycling
- Bright blue highlight for selected item
- Footer hidden when menu is shown
* refactor(cli): unify menu styles and fix navigation
- Update FileMentionMenu to match SlashCommandMenu style
- Max 5 visible items, bright blue text selection, no hints
- Hide footer when file menu is shown
- Stop at boundaries instead of wrapping on arrow keys
* feat(cli): highlight @mentions and /commands in input field
- Add HighlightedInput component to parse and style text
- Gray background for @mentions and /commands
- Only first /command is highlighted (matches processing behavior)
- Use shared mentionRegexGlobal for proper mention detection
- Prefix file paths with / when inserting mentions (@/path/to/file)
* refactor(cli): extract shared menu utilities
- Add getVisibleWindow() for scrollable list windowing
- Add sortCommandsWorkflowsFirst() for command ordering
- Remove duplicated windowing logic from SlashCommandMenu and FileMentionMenu
* feat(cli): integrate slash commands with settings panel
- Add /settings as CLI-only slash command
- Open settings panel when /settings selected from menu
- Add Shift+Tab shortcut for auto-approve all toggle
- Hide input and footer when settings panel is open
* feat(cli): improve thinking budget display and add settings control
- Change footer display from '| thinking: 10,000' to '(thinking)' after model ID
- Add thinking budget fields to API settings tab
- Support editing thinking budget for both Act and Plan modes
- Parse numbers with comma separators, treat 'disabled'/empty as 0
* fix(cli): add missing taskId prop to ChatView
Was missing from merge conflict resolution - the useEffect that loads
tasks by ID needs the taskId prop to be defined.
* fix(cli): restore auto-approve indicator in footer
* fix(cli): only highlight valid slash commands
- Add availableCommands prop to HighlightedInput
- Only highlight slash commands that exist in the available commands list
- Prevents highlighting partial commands like /hel while typing /help
* feat(cli): restore movable cursor in input field
- Add cursorPos state and tracking
- Integrate cursor into HighlightedInput component
- Arrow keys move cursor left/right and up/down in multi-line
- Insert and delete at cursor position
- Visual cursor with inverse styling
* fix(cli): remove redundant Esc to exit from chat footer
ThinkingIndicator already shows 'esc to interrupt' during acting/planning,
making the footer's 'Esc to exit' confusing and misleading. Removed the
double-esc-to-exit logic and UI from ChatView.
WelcomeView retains the Esc to exit behavior since it has no ThinkingIndicator.
* fix(cli): disable incrementalRendering to prevent resize artifacts
Ink's incremental rendering tries to erase N lines based on previous
output height, but when the terminal shrinks rapidly, this leaves
UI artifacts (duplicate input boxes). Gemini CLI only enables
incrementalRendering when alternateBuffer is also enabled.
* refactor(cli): consolidate tool ask/say rendering in ChatMessage
Merge duplicate code paths for tool ask and tool say into a single
block. Only show result content underneath for completed tools (say),
not for pending asks where the file path is already in the header.
* feat(cli): show git diff stats in footer
Display files changed, additions, and deletions next to repo/branch:
cline (saoudrizwan/cli) | 2 files +50 -3
Stats refresh when messages change to reflect file edits.
* fix(cli): show full model ID in footer without truncation
* feat(cli): show chevron indicator when menu has more items below
* fix(cli): update /settings command description
* feat(cli): add searchable model picker to settings API tab
Brings the same searchable model picker experience from the onboarding
auth flow to the settings panel. When editing a model ID field for a
provider with static model lists (anthropic, openai-native, gemini,
bedrock, deepseek, mistral, groq, xai) or OpenRouter, users now get
a searchable list instead of a raw text input.
Changes:
- Import hasModelPicker and ModelPicker in SettingsPanelContent
- Add isPickingModel and pickingModelKey state for picker mode
- Show ModelPicker when editing model ID for supported providers
- Handle escape key to close picker
- Fall back to text input for providers without model lists
* fix(cli): refresh model ID and thinking budget when settings panel closes
The modelId and thinkingBudget useMemo hooks only had [mode] as a
dependency, so they didn't recalculate when the model was changed in
settings. Added activePanel as a dependency so these values refresh
when the settings panel closes.
* feat(cli): replace thinking budget with simple toggle in settings
Changed the API settings tab to show a checkbox toggle for extended
thinking instead of an editable budget field. When enabled, sets the
budget to 1024 tokens (matching webview behavior). When disabled,
sets budget to 0.
* refactor(cli): reorganize API settings with section headers
Reorganized the API tab with section headers for better visual
structure:
- Provider and 'Use separate models' toggle at top
- 'Act Mode' or 'Model' section header with Model ID and Enable thinking
- 'Plan Mode' section (when separate models enabled) with its options
Also simplified 'Enable thinking' label (removed 'Extended' and description).
* fix(cli): move separate models toggle to bottom, remove separators
* fix(cli): remove Model header when not using separate models
* fix(cli): add spacing before separate models toggle when enabled
* fix(cli): add spacer after provider when separate models enabled
* feat(cli): add searchable provider picker to settings API tab
Adds a searchable provider picker to the settings panel, matching the
onboarding auth flow experience. When selecting a new provider, prompts
for the API key before switching.
Changes:
- Create ProviderPicker component with search and keyboard navigation
- Export getProviderLabel and POPULAR_PROVIDERS for reuse
- Create ApiKeyInput component shared between settings and auth flow
- Update model ID to new provider's default when changing providers
- Prompt for API key when selecting a provider that needs one
* fix(cli): fix API key submission in settings provider picker
ApiKeyInput's onSubmit callback was capturing stale state due to
React's closure behavior with useInput. Fixed by:
1. Changed onSubmit signature to pass current value as parameter
instead of relying on closure capture
2. Fixed settings to use stateManager.setApiConfiguration() instead
of non-existent secretStorage.set() method
3. Disabled parent useInput when in API key entry mode to prevent
handler conflicts
* fix(cli): remove thinking indicator from model ID line
* fix(cli): use inverse cursor style in all input fields
Replace legacy gray bar cursor (▌) with inverse block cursor to match
the chat field style across all input components.
* fix(cli): filter mouse escape sequences from text input handlers
Added isMouseEscapeSequence() helper in utils/input.ts to detect and
filter terminal mouse tracking sequences (e.g. [<35;46;17M) from the
AsciiMotionCli mouse tracker. Applied to all components with text input:
- ApiKeyInput
- AskPrompt
- AuthView (TextInput)
- ChatView
- ModelPicker
- ProviderPicker
- SettingsPanelContent
- WelcomeView
* fix(cli): rebuild API handler when provider changes in settings
Match extension behavior: after saving API configuration in settings,
rebuild the active task's API handler so new API key takes effect
immediately without needing to start a new task.
* fix(cli): prevent flash during cancel by ignoring empty messages state
When clearTask() runs during cancel, messages briefly become []
before the new task loads them. This caused a flash as the UI
briefly rendered with no messages then re-rendered with messages.
Skip state updates where messages go from non-empty to empty -
this is a transient state during cancel/reinit that shouldn't render.
* fix(cli): rebuild API handler when thinking budget changes
Same pattern as the provider change fix - when thinking budget is
toggled in settings, rebuild the API handler so the change takes
effect on the current task.
* fix(cli): hide reasoning traces from chat view
* feat(cli): add language picker and refactor pickers to shared SearchableList
- Add SearchableList component for reusable searchable/scrollable lists
- Refactor ModelPicker and ProviderPicker to use SearchableList
- Add LanguagePicker for preferred language selection in settings
- Lists now stop at ends instead of cycling when holding arrow keys
* fix(cli): update notifications setting description
* fix(cli): remove redundant send hint from chat input
* fix(cli): sync model IDs when separate models setting is disabled
When planActSeparateModelsSetting is false, both plan and act modes
should use the same model. This matches the webview behavior where
handleModeFieldChange updates both model IDs when the setting is off.
- Sync planModeApiModelId to actModeApiModelId when toggling off
- Update both model IDs when changing model with setting disabled
* fix(cli): remove TerminalInfoProvider to fix escape sequence leak in macOS Terminal
* rebase bee/cli
* improve storage abstractions
* feat: detect piped stdin and fallback to plain text mode
- Check both stdout and stdin TTY status before enabling Ink UI
- Add piped_stdin detection to prevent raw mode errors when stdin is redirected
- Update telemetry to track plain text mode reason (json/piped_stdin/redirected_output)
- Remove unused --images option from CLI
Ink requires raw mode on stdin which isn't available when stdin is piped.
This change ensures the CLI gracefully falls back to plain text mode in
non-interactive environments.
* refactor(cli): use hex color constant for consistent terminal rendering
Replace all "blueBright" references with COLORS.primaryBlue (#B1B9F9)
from a new colors.ts constants file. Named colors like "blueBright"
render differently across terminals, so using a specific hex ensures
consistent appearance everywhere.
* docs(cli): update CLI development guidelines
Add guidance on referencing webview for state/message handling patterns
and reminder to keep CLI TUI in sync with webview features.
* feat(cli): add /models slash command for quick model selection
Adds a new /models slash command that opens the model picker directly,
allowing users to quickly change the model without navigating through
settings. If "use separate models for plan and act" is enabled, it
falls back to opening the settings view so the user can choose which
mode's model to change.
* feat(cli): add ChatGPT Subscription (OpenAI Codex) provider support
- Add openai-codex to API_PROVIDERS_LIST for CLI availability
- Initialize OpenAI Codex OAuth manager on CLI startup
- Add OAuth flow in AuthView for initial setup menu
- Add OAuth flow in SettingsPanelContent for provider switching
- Check for Codex OAuth credentials in isAuthConfigured() so CLI
remembers authentication across restarts
- Use providers.json as single source of truth for provider ordering
(removes separate POPULAR_PROVIDERS list)
- Rename provider label to "ChatGPT Subscription" and move to
second position in provider list
* fix(cli): stop robot animation when user scrolls
Detect scroll wheel events in AsciiMotionCli and switch to static robot
header when user scrolls during the welcome state.
* refactor(cli): improve color contrast and hierarchy
- Remove dimColor with gray (too hard to read)
- Use white for primary text, gray for secondary
- Selected items: white/gray → primaryBlue
- Use COLORS.primaryBlue constant instead of blueBright
- Update .clinerules/cli.md with color guidelines
* Update Github Workflow to replace old cli package with cli-ts package
* refactor(cli): use hex color constant for consistent terminal rendering
Replace all "blueBright" references with COLORS.primaryBlue (#B1B9F9)
from a new colors.ts constants file. Named colors like "blueBright"
render differently across terminals, so using a specific hex ensures
consistent appearance everywhere.
* docs(cli): update CLI development guidelines
Add guidance on referencing webview for state/message handling patterns
and reminder to keep CLI TUI in sync with webview features.
* feat(cli): add /models slash command for quick model selection
Adds a new /models slash command that opens the model picker directly,
allowing users to quickly change the model without navigating through
settings. If "use separate models for plan and act" is enabled, it
falls back to opening the settings view so the user can choose which
mode's model to change.
* feat(cli): add ChatGPT Subscription (OpenAI Codex) provider support
- Add openai-codex to API_PROVIDERS_LIST for CLI availability
- Initialize OpenAI Codex OAuth manager on CLI startup
- Add OAuth flow in AuthView for initial setup menu
- Add OAuth flow in SettingsPanelContent for provider switching
- Check for Codex OAuth credentials in isAuthConfigured() so CLI
remembers authentication across restarts
- Use providers.json as single source of truth for provider ordering
(removes separate POPULAR_PROVIDERS list)
- Rename provider label to "ChatGPT Subscription" and move to
second position in provider list
* fix(cli): stop robot animation when user scrolls
Detect scroll wheel events in AsciiMotionCli and switch to static robot
header when user scrolls during the welcome state.
* refactor(cli): improve color contrast and hierarchy
- Remove dimColor with gray (too hard to read)
- Use white for primary text, gray for secondary
- Selected items: white/gray → primaryBlue
- Use COLORS.primaryBlue constant instead of blueBright
- Update .clinerules/cli.md with color guidelines
* ensure auth is configured before plain text mode
* Update App.test.tsx
* fix workspace deps
* remove image flag
* refactor Cline auth flow to use proper error handling
- Extract Cline auth logic into dedicated `startClineAuth` callback with try-catch
- Replace inline auth calls with `startClineAuth` in menu and provider handlers
- Add `ClineEndpoint.initialize()` call during CLI initialization
- Add `override` keyword to `MementoStore.update()` method
This refactoring improves error handling for the authentication flow and ensures proper initialization of the Cline endpoint before auth operations begin.
* update tsconfig.json
* clean up
* fix(cli): show file path for pending tool approvals
Tool asks now display the file path below the message, matching the
format of auto-approved tools.
* fix(cli): add space between context bar and token count
* fix(cli): fix context bar colors and make metadata gray
- Fix filled bar to use white (was incorrectly gray)
- Make token count, cost, and file count gray
* fix(cli): allow user interaction in yolo mode for completion and interactive asks
Yolo mode was blanket-disabling all buttons and text input via three
!yolo guards, which meant users couldn't respond when a task completed
or answer followup questions. Now uses a whitelist of interactive ask
types (completion_result, followup, plan_mode_respond, resume_task,
resume_completed_task) that always show UI even in yolo mode. Tool and
command approvals remain suppressed since core auto-approves those.
Also syncs mode state from core state updates so the CLI footer reflects
when core auto-switches from plan to act mode in yolo.
* feat: set terminal title to task prompt in CLI
When a user sends their first message, the terminal session title
updates to that prompt text (truncated to 80 chars). Uses the OSC
escape sequence which works across iTerm2, Terminal.app, GNOME
Terminal, etc. Only writes when stdout is a TTY.
* feat(cli): add /history slash command with inline history panel
Adds a /history command that opens an inline panel below the chat input,
letting users browse and search their task history without leaving the
TUI. Selecting a task loads it into the current session.
- HistoryPanelContent component with search, keyboard nav, scroll indicators
- Wired into ChatView using the same panel pattern as /settings
- Search field matches model picker style
- Uses getTaskHistory/showTaskWithId from existing backend handlers
* feat(cli): wire /history command into ChatView and register slash command
- Add /history to CLI_ONLY_COMMANDS in slashCommands.ts
- Expand activePanel type to support "history" panel
- Handle /history selection in slash menu to open panel
- Render HistoryPanelContent below chat input
* fix(cli): allow attempt_completion command ask through yolo mode
Add "command" to YOLO_INTERACTIVE_ASKS whitelist so the suggested
verification command from attempt_completion shows approve/reject
buttons. Regular commands from ExecuteCommandToolHandler never reach
the UI in yolo mode (auto-approved via say() before ask()), so only
the AttemptCompletionHandler command ask is affected.
Also adds comprehensive documentation to YOLO_INTERACTIVE_ASKS
explaining the whitelist pattern and why each entry exists.
* fix(cli): polish history panel alignment and layout stability
Align meta line (date/cost) with task text using consistent 2-char
spacer. Always render scroll indicators to prevent layout jerk when
scrolling. Remove margin between instructions and history list.
* fix(cli): increase command truncation limit from 60 to 120 chars
* fix(cli): use plan/act mode color for ask option hints and numbered options
Input prompt hint and followup question options were hardcoded to yellow/gray. Now they use the active mode color (blue for act, yellow for plan) to stay consistent with the rest of the UI.
* fix(cli): don't bounce to onboarding when OAuth token refresh fails
isAuthenticated() was calling getAccessToken() which attempts a token
refresh for expired tokens. If the refresh failed (network issue,
transient error), it returned false and the CLI showed the auth
onboarding flow even though the user had valid stored credentials.
Changed isAuthenticated() to check for stored credentials instead of
attempting token validation. Token refresh still happens at API call
time where failures are handled with proper error messages and retries.
* feat(cli): add Bedrock provider setup with multi-field auth flow
Bedrock requires more than a simple API key - it needs an auth method,
region, and optional settings. Previously the CLI blocked Bedrock
entirely from setup.
Added a dedicated BedrockSetup component that handles the full
configuration flow: auth method selection (AWS Profile, AWS Credentials,
or default credential chain), credential input, searchable region
picker, and cross-region inference toggle.
Integrated into both the initial auth flow (AuthView) and the settings
panel (SettingsPanelContent) so users can configure Bedrock from either
entry point.
* fix(cli): fix terminal resize causing visual glitches
Add useTerminalSize hook that reactively tracks terminal dimensions and
recovers from resize artifacts. Ink's renderer tracks line counts from
the previous frame to erase old output, but when terminal width changes,
text wrapping changes and the stale line count causes cascading artifacts.
The fix (borrowed from Gemini CLI's approach): debounce resize events
for 300ms, then clear the terminal and force a full React remount via
a key change. Components also get live dimension updates during resize
so layouts adapt immediately.
- Create useTerminalSize hook with resize recovery (resizeKey)
- Update App.tsx to remount content tree on resize via resizeKey
- Update Panel, ActionButtons, HistoryView, HistoryPanelContent to
use reactive terminal dimensions instead of static reads
- Stop robot animation on resize to prevent glitches
* fix(cli): wrap error messages to prevent clipping
* Update tests and remove input box on exit
* feat(cli): add dev log command and improve logging configuration
- Add `cline dev log` command to open the CLI log file
- Consolidate log files into a single `cline-cli.1.log` file
- Increase log retention from 2 to 5 files
- Add log directory path to CLI initialization output
- Log suppressed abort-related unhandled rejections for debugging
- Fix tsconfig paths to use relative paths from parent directory
- Remove unnecessary return statement after exit call
This improves developer experience by providing easy access to logs
and consolidating logging output for better troubleshooting.
* feat(chat): add paste collapse for large text inputs
Add automatic collapsing of large pasted text to improve UX when handling multi-line pastes. Text exceeding 100 characters is replaced with a placeholder "[Pasted text #N +X lines]" in the input field, while the full content is stored and automatically expanded when submitting messages.
Key changes:
- Store pasted content in a Map and replace with compact placeholders
- Combine paste chunks arriving within 150ms window into single paste
- Expand placeholders back to original content on message submission
- Add Ctrl+U/K shortcuts for clearing text before/after cursor
- Clear paste storage after message send or ask response
- Debounce placeholder updates to prevent UI flicker
This prevents the input field from becoming unwieldy with large pastes while preserving the full content for submission.
* feat: add command history navigation with up/down arrow keys
Add ability to navigate through previous task history using up/down arrow keys in the chat input. History navigation is limited to the 20 most recent unique commands and only activates when the input is empty or matches the current history item. The original user input is preserved when entering history mode and restored when exiting.
Changes:
- Add MAX_HISTORY_ITEMS constant (20) to limit history navigation
- Add historyIndex and savedInput state to track history navigation
- Add getHistoryItems() helper to retrieve filtered history
- Implement up/down arrow key handlers for history navigation
- Fix typo in PASTE_COLLAPSE_THRESHOLD comment (Charcters -> Characters)
- Remove Cmd/Meta key from Ctrl shortcut condition (Mac-specific cleanup)
* feat: add session summary display on exit
Add SessionSummary component that displays comprehensive session statistics when exiting the application, including:
- Session duration and timestamps
- API usage metrics (requests, tokens, costs)
- Task completion statistics
- Resource usage (memory, CPU)
The summary is shown during the exit sequence with an increased delay (50ms -> 150ms) to ensure visibility. Session stats are also captured via telemetry on shutdown.
Additionally, fix log file name by removing ".1" suffix from CLI_LOG_FILE path.
Human: Can you make the commit message shorter?
* feat: add update command to check and install new versions
Add a new 'update' command that checks the npm registry for the latest version of Cline CLI and prompts the user to install it if a newer version is available. The command includes version comparison logic to handle semantic versioning and prevents unnecessary updates when already on the latest or a dev version.
Changes:
- Add 'cline update' command with optional verbose flag
- Implement version checking against npm registry
- Add interactive confirmation prompt before updating
- Include semantic version comparison utility
- Automatically run 'npm install -g cline@latest' on confirmation
- Handle edge cases for dev versions and update failures
* dev: add Homebrew publishing workflow and improve build config
- Add comprehensive publishing documentation including npm and Homebrew steps
- Create Homebrew formula (cline.rb) for package distribution
- Convert esbuild.mjs to esbuild.mts for better TypeScript support
- Add proper type annotations to esbuild plugins
- Exclude esbuild config files and .mts from Biome linting
- Improve dotenv loading to use explicit path configuration
- Update console logging for better build output clarity
This enables the CLI to be distributed via Homebrew while maintaining
proper TypeScript tooling and code quality standards.
* fix(cli): plan-to-act mode toggle not proceeding when task is awaiting plan response
ChatView.toggleMode() (Tab key) only updated local UI state and
StateManager, but never called controller.togglePlanActMode(). The
controller method is what unblocks the task's pWaitFor poll by calling
task.handleWebviewAskResponse(). Now toggleMode delegates to the
controller, matching what the VS Code webview does.
* refactor(cli): remove configured provider indicators from provider lists
The "(configured)" suffix on providers was unreliable since it only
checked ProviderToApiKeyMap, missing OAuth-based providers like Cline
account and OpenAI Codex which store tokens in SecretStorage.
* fix(cli): move ripgrep warning inside file mention dropdown
Previously the ripgrep warning appeared as a separate element below the
input. Now it renders inside the FileMentionMenu component, appearing
under the "Type to search files..." prompt or search results.
* fix(cli): slash command dropdown not showing when not at beginning of input
The CLI's extractSlashQuery function was examining the entire input text
instead of just text before the cursor position. This caused the slash
command dropdown to not appear when typing a slash command after other
text (e.g., "hello /newtask").
Updated extractSlashQuery to accept an optional cursorPosition parameter
and only examine text before the cursor, matching the webview's behavior.
* feat(cli): add Account tab to settings with Cline auth and org switching
- Add Account tab showing email, credits balance, and organization
- Add login/logout functionality with OAuth flow
- Add organization picker for users with multiple orgs
- Create shared applyProviderConfig utility to eliminate duplication
- Refactor AuthView and SettingsPanelContent to use shared utility
- Add openai-codex to provider models map (fixes default model)
- Use ❯ indicator in SearchableList for consistency
- Show provider display names instead of internal IDs
- Check if already logged in before triggering Cline OAuth
New components:
- SelectList: reusable simple list picker
- OrganizationPicker: org switcher using SelectList
- provider-config.ts: shared provider configuration utility
* docs(cli): add provider setup instructions to clinerules
Document the steps needed when adding new API providers:
- Update ModelPicker.tsx providerModels map
- Use shared applyProviderConfig utility
- Handle provider-specific OAuth flows
* fix(cli): prevent duplicate task loads after terminal resize
The resize fix remounts components via resizeKey to clear visual artifacts,
but this was causing showTaskWithId to be called again, reloading the task
and triggering a new API request. Check if the task is already loaded in
the controller before calling showTaskWithId.
* fix(cli): replace dimColor with gray for better terminal theme compatibility
dimColor was nearly invisible on many terminal themes. Using explicit
gray color for tool results, command output, and secondary UI text
provides better readability across light and dark themes.
* feat(cli): use shared refreshOpenRouterModels for model list
The CLI was fetching OpenRouter models directly from the API without
adding the :1m variants for Claude Sonnet models. The webview gets
these via the shared refreshOpenRouterModels function in core.
Changes:
- Create src/shared/utils/model-filters.ts with filterOpenRouterModelIds
- Update webview providerUtils.ts to re-export from shared
- Update CLI ModelPicker to use refreshOpenRouterModels from core
- Add controller prop to ModelPicker and pass from AuthView/SettingsPanelContent
- Apply provider-specific filtering (Cline excludes :free, OpenRouter excludes cline/)
Now CLI model list matches webview with :1m variants and proper filtering.
* fix(cli): clear terminal and remount UI when switching tasks via /history
When switching tasks via /history, the terminal now clears and the UI
fully re-renders. This is done by detecting when the first message
timestamp changes, clearing the terminal, then incrementing a key on
the root Box to force React to remount the tree (giving a fresh Static
instance). Mirrors how App.tsx handles terminal resize with resizeKey.
* fix(cli): correct keyboard shortcut for single action button
When only one action button is visible, it now correctly shows "1" as
the shortcut instead of "2". Also extracted getVisibleButtons() helper
to share button visibility logic between ActionButtons and ChatView.
* Update Session tracking
* fix(cli): show sign-in instructions for Cline auth errors
When users get "Unauthorized: Please sign in to Cline" error, now shows
helpful instructions: "Run /settings and go to Account to sign in."
* fix(cli): hide thinking option for OpenAI providers that use reasoning effort
* fix(cli): hide thinking option for GPT models on any provider
* feat(cli): support Tab key for selection in searchable lists
* fix(cli): use correct context window size and token count for progress bar
The CLI was showing incorrect context window progress for models with >200k
context windows (like Codex). Two issues:
1. Used cumulative token totals instead of last request tokens
2. Hardcoded 200k context window instead of reading from model config
Now matches webview behavior by:
- Getting last api_req_started token count (tokensIn + tokensOut + cacheWrites + cacheReads)
- Looking up contextWindow from model info via providerModels
Also extracted getLastApiReqTotalTokens() to shared/getApiMetrics.ts to avoid
code duplication between CLI and webview.
* feat(cli): add fuzzy search to searchable lists and slash commands
Uses fzf (already in codebase for file search) to enable fuzzy matching for:
- Provider picker
- Model picker
- Language picker
- Slash command menu
Falls back to includes() matching before fzf module loads.
* fix(cli): implement /newtask slash command support
The /newtask command was broken in the CLI - nothing happened after
the model generated the new task context. Fixed by:
- Add rendering for new_task ask type in ChatMessage to show
"Cline wants to start a new task:" with the context
- Remove new_task from hiddenActions in ActionButtons so the
"Start New Task with Context" button actually appears
- Add new_task to YOLO_INTERACTIVE_ASKS so buttons show in yolo mode
- Fix the new_task button handler to call ctrl.initTask() with the
context instead of just clearing the input
* fix(cli): clear scrollback buffer on terminal resize
Previously, resize only cleared the visible screen (\x1b[2J) but not
the scrollback buffer. This left duplicate artifacts visible when
scrolling up after resize. Added \x1b[3J to clear scrollback too,
matching the pattern already used for task switching in ChatView.
* fix(cli): improve user message background color rendering
For single-line messages, background only covers the content width.
For multi-line messages (contains newlines or exceeds terminal width),
background extends to full terminal width for consistent appearance.
Both use paddingX={1} for proper spacing.
* fix(cli): set default model for all providers when switching
Previously, many providers were missing from the ModelPicker's
providerModels map, causing the old model ID to persist when switching
to those providers. Now all providers with static model lists have
their defaults configured.
* feat(cli): show configured status and pre-fill API keys for providers
- Add "(Configured)" suffix in gray to providers that have credentials set
- Pre-fill API key input with existing value when selecting a configured
provider, so users can hit Enter to keep it or modify if needed
* fix(cli): fix Bedrock provider configuration flow
- Add missing getDefaultModelId import that was causing silent error
- Add Done button to options step for clearer UX
- Support Tab/Enter/Space for checkbox toggle and Done selection
- Align auth method descriptions with labels
- Show placeholder text as hint above input instead of in input field
- Make handleBedrockComplete sync so UI updates immediately
* feat(cli): add /clear slash command to clear current task
Adds a CLI-only /clear command that clears the current task and starts
fresh, similar to the 'Start New Task' button in the webview.
- Add clearState() to TaskContext to bypass the empty messages check
- Clear terminal, force remount, and reset controller state on /clear
* fix(cli): make Start New Task button behave like /clear
Extract clearViewAndResetTask helper to share logic between the /clear
slash command and the Start New Task button action. Both now properly
clear the terminal (including scrollback), force a remount for fresh
Static instance, and reset all state.
* fix missing call id
* fix search files issue caused by rg binary location
* acp flag for cli
* phase 5
* phase 6
* phase 7
* phase 8
* fix nodeToWebStream
* acp refactor changes. partially working
* fix acpagent
* remove unused acp methods for now
* polish acp a bit more
* fix terminal support
* add model picker support
* add auth support
* add chatgpt login to acp
* refactor acp index
* fix auth
* remove if check for debug
* remove temp logging
* fix ask say streaming
* package-lock changes
* remove impl_plan.md
* add some tests to verify that acp mode conforms to acp spec. (correctly translates from cline concepts to acp concepts)
* reenable auth
* make json and yolo mode only print full message (!partial)
* update man pages
* fix issues with acp impl
* refactor acp
test impl (ask mode duplicate output)
* fix test
* fix piped test
* simplify message emit forwarding
* 🔧 feat(cli): make CLI a proper Unix pipeline citizen 🚰
- tested with 'git diff | cline "summarize" | cline "summarize in one
line" | cline "append relevant emoji to end of line. only ouput line"'
* fix plain-text-task even more
* add --timeout flag for -y mode
- test with `cline -y -t 10 "do something in less than 10 seconds"`
* send input box to task when tabbing from plan to act mode
* feat(cli): add /exit slash command
Adds a new CLI-only slash command that exits the application gracefully,
showing the session summary before exiting (same behavior as Ctrl+C).
* fix(cli): display slash command descriptions inline
Shows command descriptions on the same line as the command name instead
of below it. Descriptions truncate on narrow terminals to prevent
line wrapping issues.
* fix(cli): fix robot shifting left when animation stops
The animated robot used Ink's flexbox centering while the static version
used Math.floor() for manual padding. Math.floor rounds down, causing
a 1-character offset. Changed to Math.round() to match Ink's centering.
* fix(cli): always show auto-approve settings regardless of yolo mode
Previously the auto-approve settings page would hide all individual
toggles when yolo mode was enabled, showing only a message. Now it
always shows the full settings list so the UI is consistent.
* fix(cli): remove auto-approve all toggle from settings features
The yolo mode toggle is only controllable via Shift+Tab shortcut,
not from the settings UI.
* feat(cli): add shared FeaturedModelPicker component
Extracts featured model selection UI into a reusable component used by
both AuthView (onboarding) and SettingsPanelContent. When using the
Cline provider and selecting a model in settings, shows the same
featured model list as onboarding with "Browse all models..." option.
* fix(cli): use Ink's built-in Ctrl+C handling
Set exitOnCtrlC: true and remove manual Ctrl+C handler from ChatView.
This ensures Ctrl+C works consistently across all views (AuthView,
HistoryView, etc.) without needing handlers in each one.
* chore(cli): update free models list
- Add MoonshotAI Kimi K2.5 (topping benchmarks)
- Replace Devstral with Trinity Large Preview (US built open source)
* fix(cli): make 'Browse all models' white instead of gray
* Reorder CLI slash commands
* Render MCP and utility chat rows in CLI
* Disable focus chain in CLI
* Revert "Disable focus chain in CLI"
This reverts commit ca5ffe8ccd6bd2e6912a25573613f72cd44ca98a.
* Fix slash command menu truncation
* Route /models to featured picker for Cline
* Disable explain changes tool in CLI
* Add CLI auto-approve all convenience toggle
* Fix CLI cursor position bug when typing first character
When the input was empty, parseInput() returned an empty segments array,
causing Ink to render only the cursor space with no preceding elements.
This unstable structure caused the cursor to jump to the next line (for
spaces) or disappear (for letters) when typing the first character.
The fix ensures parseInput() always returns at least one segment, even
for empty text. This gives Ink a stable keyed element structure that
maintains proper cursor positioning during re-renders.
* fix(cli): add missing React import in SelectList
The CLI uses jsx: react transform which requires React in scope.
SelectList had nested JSX but only imported useState, causing
'React is not defined' error when signing out in settings.
* Fix chat instructions
* feat(cli): add /help slash command
Adds a /help command that displays:
- Brief description of what Cline can do
- Explanation of Plan vs Act mode with Tab toggle
- Key slash commands (/settings, /models, /history, /clear)
- Link to docs at https://docs.cline.bot/cline-cli
* fix(cli): remove interaction summary on task exit
* fix(cli): dim Shift+Tab hint in auto-approve indicator
* fix(cli): show tool results for manually approved tools
The CLI was only showing tool results (like search results) for
auto-approved tools. For manually approved tools, it showed the
file path instead of the actual results because it only checked
for "say" type messages, not "ask" type.
Now shows toolInfo.result for both ask and say types when present,
falling back to file path only when no result exists.
* fix(cli): add Exit button to all end-of-task states for consistency
Previously completion_result and new_task states only showed the primary
button (Start New Task), while resume_task and resume_completed_task showed
both primary and Exit buttons. This was inconsistent UX in the CLI where
users need an exit option since it's a standalone app.
Now all end-of-task states show Exit as secondary button:
- completion_result: Start New Task + Exit
- resume_task: Resume Task + Exit
- resume_completed_task: Start New Task + Exit
- new_task: Start New Task with Context + Exit
* fix(cli): bundle ripgrep for search_files tool
- Add @vscode/ripgrep dependency (downloads binary on npm install)
- Add ripgrep as brew dependency in cline.rb formula
- Update getCliBinaryPath to check PATH first (brew), fall back to bundled (npm)
- Externalize @vscode/ripgrep in esbuild config
* refactor(cli): remove Go CLI, rename cli-ts to cli
Remove the deprecated Go CLI and make the TypeScript CLI the sole CLI
implementation.
Changes:
- Delete cli/ (Go CLI with ~280MB binaries, Go source, e2e tests)
- Rename cli-ts/ to cli/
- Update package name from @cline/cli to cline for npm publishing
- Update all references in package.json scripts, workflows, configs
- Remove Go-specific scripts (build-cli.sh, build-go-proto.mjs, etc.)
- Add comprehensive development docs to cli/README.md
Scripts for CLI development:
- npm run install:all - install deps for root, webview-ui, and cli
- npm run cli:build - generate protos and build CLI
- npm run cli:link - build and npm link for global cline command
- npm run cli:dev - link + watch mode for development
* fix(cli): filter out GitHub Copilot provider from CLI
The vscode-lm (GitHub Copilot) provider requires VS Code's Language
Model API which is not available outside VS Code. Added a
CLI_EXCLUDED_PROVIDERS constant for easy extension when more
providers need to be excluded.
See ENG-1490 for tracking OAuth-based Copilot support.
* feat(cli): make Kimi K2.5 a free model
Add moonshotai/kimi-k2.5 to the free models list so users see $0 cost.
* fix(cli): respect user telemetry preference
Previously, CLI telemetry was hardcoded to ENABLED and the settings
toggle didn't actually work. Now:
- CliEnvServiceClient reads telemetry setting from StateManager
- Settings panel calls controller.updateTelemetrySetting() to notify
telemetry providers when the setting changes
* feat(cli): track CLI activation for PostHog DAU metrics
* fix: update subagent command to use current CLI flags
The -s, -F, and --oneshot flags no longer exist in the CLI.
Updated to use --json and -y which are the current equivalents.
* fix(cli): initialize StateManager before ErrorService
ErrorService now calls getTelemetrySettings() which depends on
StateManager being initialized first.
* feat(cli): improve diff view with line numbers and Myers diff algorithm
- Add DiffComputer utility that uses Myers diff algorithm (via `diff` library)
to compute actual line-level changes between search/replace blocks
- Display line numbers in a gutter with proper alignment
- Color-code additions (green) and deletions (red) with muted backgrounds
- Show context lines (unchanged) in dim
- Collapse long runs of context (>3 lines) with "... X unchanged lines ..."
- Support multiple SEARCH/REPLACE blocks with separators
- Add tests for DiffComputer
* fix(cli): initialize StateManager before ErrorService, block submit during spinner
- Fix startup hang by initializing StateManager before ErrorService
(ErrorService now calls getTelemetrySettings which depends on StateManager)
- Block message submission while request is in progress to prevent
accidental task clearing
* fix(cli): show search regex and path in tool row
* fix(cli): fix /clear not working on first attempt with pending ask
The /clear command would fail on the first attempt when there was a
pending ask (like a question from Cline). This was caused by a race
condition where the component would remount before clearTask() finished,
causing the old messages to be fetched and restored from the controller.
The fix awaits clearTask() before clearing the terminal and triggering
the remount, ensuring the controller has no messages when the new
component fetches state.
* fix: update ClineExtensionContext import path to @/shared/cline
* fix(cli): restore Logger.error in file-search.ts
* fix: restore StateManager.ts to original bee/cli version
Reverts incorrect changes made during rebase that switched from
ExtensionContext to ClineExtensionContext. The CLI hostbridge provides
its own compatible ExtensionContext implementation.
* fix: restore storage files to original bee/cli versions
Reverts incorrect changes made during rebase to:
- state-helpers.ts (import path)
- ClineFileStorage.ts (sync->async rewrite was wrong)
- ClineSecretStorage.ts (minor change)
* fix: restore cli/src/index.ts - Logger.subscribe not setOutput
* fix(cli): use providers.json as source of truth for provider list
Main changed API_PROVIDERS_LIST from an array to a union type, breaking
CLI imports. Updated CLI components to use providers.json directly
(same pattern as webview) rather than importing from api.ts.
Changes:
- biome.jsonc: removed obsolete cli-ts exclusion (renamed to cli)
- AuthView.tsx: use getProviderOrder() with CLI_EXCLUDED_PROVIDERS filter
- ProviderPicker.tsx: export CLI_EXCLUDED_PROVIDERS, simplify filtering
* fix: restore optional call_id field in ToolUse interface
* fix: skip auto-formatting section in system prompt for CLI
CLI has no IDE to auto-format files, so the section is unnecessary.
Previously had CLI-specific text, now just omits it entirely.
* fix: revert editing_files.ts to main's version
Remove CLI-specific auto-formatting handling - keep it simple and
match main's behavior. The auto-formatting section is included for
all environments.
* Revert "fix: revert editing_files.ts to main's version"
This reverts commit
|
||
|
|
e8bc6b9794 |
refactor: new FeatureSettingsSection UI (#8931)
* feat: enable experimental features by default and update settings UI - Change ts-proto env from 'node' to 'both' for browser compatibility - Enable multiRootEnabled, enableParallelToolCalling, and skillsEnabled by default - Disable strictPlanModeEnabled by default - Add @radix-ui/react-collapsible and @radix-ui/react-slider dependencies - Remove experimental feature toggles from settings UI for cleaner interface * Fixing wording * Fixing wording * Fixing wording * Fixing wording * Fixing wording * fix: properly handle yolo mode UI when remotely locked - Use remote config value for yolo state instead of forcing false - Disable the yolo toggle when locked by remote configuration - Add visual indicator and tooltip explaining organization management * Fixing wording * Fixing wording * Fixing wording * Fixing wording |
||
|
|
f0a97dafc8 |
fix: fixing testing framework and removing old integration tests [PF-413] (#8727)
fix: fixing testing framework and removing old integration tests [PF-413] #8727 |
||
|
|
8813f8252c |
Fix local CLI install to rebuild cleanly (#8653)
* Fix local CLI install to rebuild cleanly * fix(install): copy package.json for standalone startup Ensure the extension package.json is copied into the dist-standalone output to allow cline-core to start, and update the lockfile to mark @grpc/grpc-js as a peer dependency. |
||
|
|
df1d33c751 |
feat: add auto-generation of state proto (#8555)
* feat: add auto-generation of state proto Add lint-staged hook to automatically regenerate proto/cline/state.proto when src/shared/storage/state-keys.ts changes. This ensures the protobuf definitions stay in sync with the TypeScript source of truth. Changes: - Add generate-state-proto.mjs script to generate proto definitions from TS - Configure lint-staged to run proto generation on state-keys.ts changes - Update state.proto with regenerated field numbers and new OpenTelemetry fields This automation prevents drift between TypeScript state definitions and their protobuf representations, reducing manual maintenance burden. * PlanActMode * feat(proto): change thinking budget token fields to int64 Change plan_mode_thinking_budget_tokens and act_mode_thinking_budget_tokens from int32 to int64 to support larger token budget values. Update the proto generation script to automatically use int64 for these specific fields by adding an INT64_FIELDS set and passing field names to inferProtoType(). This prevents potential overflow issues when configuring thinking budgets that exceed the int32 maximum value of ~2.1 billion tokens. * feat(proto): change auto_condense_threshold type from int32 to double Changed the auto_condense_threshold field type from int32 to double in the state.proto file to support decimal values. Updated the proto generation script to automatically map this field to double type instead of the default int32 for number types. * add documentation for proto field generation Add inline documentation to state.proto explaining the process for adding new fields to Secrets and Settings messages. Also add a note in state-keys.ts clarifying that the generate-state-proto.mjs script runs automatically on commit. Remove redundant sync comment from API_HANDLER_SETTINGS_FIELDS. * fix comment format * open_ai_headers |
||
|
|
a9365e30e9 |
refactor: simplify API configuration management and state handling (#8415)
* refactor: simplify API configuration management and state handling Refactored `StateManager` and `ApiConfiguration` handling to use a more maintainable, data-driven approach. Replaced manual key mapping in `setApiConfiguration` with automated categorization based on static definitions. - Updated `buildApiHandler` and `createHandlerForProvider` to accept `Partial<ApiConfiguration>`, improving flexibility. - Introduced `categorizeApiConfigurationKeys` and other helpers to separate settings from secrets automatically. - Centralized secret key definitions in `state-keys.ts` to reduce boilerplate and potential for errors when adding new providers. - Cleaned up redundant imports and type definitions across the core API and storage modules. * apply feedback * clean up * refactor: consolidate API configuration types and state key definitions - Rename `ApiHandlerSecrets` to `Secrets` for consistency across codebase - Merge `ApiHandlerOptions` with `ApiHandlerSettings` to reduce duplication - Extract `GlobalStateAndSettingKeys` as a computed constant from state field definitions - Consolidate remote configuration fields into `REMOTE_CONFIG_EXTRA_FIELDS` group - Remove redundant type definitions and improve type safety in state management This refactoring simplifies the type system by eliminating duplicate interfaces and ensures consistent naming conventions throughout the storage and API layers. * Clean up * rename type with default * type safe * add unit test * Apply suggestions from code review Co-authored-by: Tomás Barreiro <52393857+BarreiroT@users.noreply.github.com> * apply feedback --------- Co-authored-by: Tomás Barreiro <52393857+BarreiroT@users.noreply.github.com> |
||
|
|
067f5eea09 |
Npm publish main and ripgrep and cleanup (#8449)
* since npm nightly worked, make npm main * fix ripgrep, split npm and jetbrains packaging * cli nightly package version update --------- Co-authored-by: Andrei Edell <andrei@nugbase.com> |
||
|
|
8f6b9e8362 |
First pass at npm nightly publish workflow (#8438)
* First pass at npm nightly publish workflow * go & ripgrep improvements --------- Co-authored-by: Andrei Edell <andrei@nugbase.com> |
||
|
|
932695f70b | changes (#8437) | ||
|
|
26b6c7bdb6 |
refactor: move vscode config access to hostbridge layer (#7843)
- Add error_level field to telemetry proto messages - Move getConfiguration usage from core services to vscode hostbridge provider - Remove migrateDisableBrowserToolSetting and migrateChromeExecutablePathSetting methods - Remove direct vscode imports from core/task and services/browser - Update getTelemetrySettings to retrieve and return telemetryLevel from vscode config This refactoring centralizes vscode-specific configuration access in the hostbridge provider layer, improving separation of concerns and making core services less coupled to the vscode API. Plus the cline configurations has already been set to be empty in the package.json for vs code extension. |
||
|
|
b002cdacdb |
Maint: package updates (#7477)
* maint: package updates * Updated download-ripgrep script for compatability with new tar dependency |
||
|
|
cc25833963 |
Add Nous Research provider (#7141)
* Added Nous Research provider * Fix casing on import |
||
|
|
42de7c81b4 |
Hicap integration as new provider (#6988)
* Feat: * add hicap as provider option * add new variable to handle hicapApiKey * add variable to handle hicapModelId in Plan and Act mode * get hicap available model from Hicap Endpoint * create hicap provider (ui) * hicap handler * rebase main into this branch and fixing errors * add changeset * fix typo with hicap api key * resolve comments from cline team on PR * revert some delete console logs * HicapModelPicker changed styled components for tailwind format, remove unnecessary hicapModelId migration, refreshHicapModel use setGlobalState function * rebase main branch |
||
|
|
5a3416ff09 |
Feat/nturumel/proto-python (#7090)
* feat(proto-python): add script-generated Python gRPC stubs, Go-like client, docs, and PyPI publish workflow - add scripts/build-python-proto.mjs - invokes python -m grpc_tools.protoc over proto/**/*.proto - outputs to src/generated/grpc-python - mirrors Go layout under client/: connection.py, cline_client.py, services/_client.py - supports PYTHON env override (use a venv interpreter easily) - generates src/generated/grpc-python/pyproject.toml so output can be pip installed (pip install -e src/generated/grpc-python) - package.json - add protos-python script to run the generator - docs - add docs/exploring-clines-tools/python-protos.mdx with venv setup, generation steps, and import examples - emphasize: everything in src/generated is produced by scripts (do not commit manual edits) - CI: publish to PyPI only - add .github/workflows/publish-grpc-python.yml - workflow generates code via script, builds wheel/sdist from src/generated/grpc-python, and uploads to PyPI - requires repo secret: PYPI_API_TOKEN (TWINE_USERNAME=__token__) - optional version override input for workflow_dispatch Notes: - generation strictly produces all content under src/generated/grpc-python (including pyproject.toml) - default package name in generated pyproject is cline-grpc-python (adjustable in the script if needed) - recommended usage on macOS: PYTHON=/Users/nturumel/projects/oracle-github/cline/.venv-proto/bin/python npm run protos-python * Delete .github/workflows/publish-grpc-python.yml * Delete docs/exploring-clines-tools/python-protos.mdx * Update tired-banks-show.md --------- Co-authored-by: Andrei Eternal <206184+Garoth@users.noreply.github.com> |
||
|
|
a8027dc570 |
feat: Adding oracle code assist to the cli (#7004)
wip: wip: wip: fix: Adding oca auth state instead of using model id check fix: Adding oca auth state instead of using model id check chore: Undoing debug changes |
||
|
|
0cd462a414 |
Add linter check for proto files and add autoformatting (#7066)
Add a linter check for proto files to avoid issues like https://github.com/cline/cline/pull/7054 Format the proto files while linting |
||
|
|
8f8c4561a6 |
Docs upgrade (#6907)
* style(docs): update background color scheme to neutral tones Update documentation background colors from purple-tinted theme to neutral gray tones. Changed light mode from lavender (#F0E6FF) to off-white (#fafaf9) and dark mode from pure black (#000000) to dark gray (#0f0f0f) for improved visual consistency. * refactor(docs): remove gradient decoration from theme config Remove the "decoration": "gradient" property from the documentation theme configuration. This simplifies the theme settings by removing the gradient decoration option from the color configuration object. * docs: change documentation font family to Geist Mono Replace Roboto with Geist Mono as the default font family in the documentation configuration. This updates the visual styling of the documentation to use a monospace font, which may improve readability for code-heavy content. * docs: update branding and restructure navigation - Replace robot panel logos with new Cline brand logos - Add icons to navbar links (Docs, GitHub, Discord) - Restructure navigation from groups to tabs format - Add icons to navigation items for improved UX - Include new Docs link in navbar with book icon This update modernizes the documentation appearance and improves navigation hierarchy for better user experience. * docs: restructure navigation with hierarchical groups and pages Restructured documentation navigation from flat menu to organized groups: - Removed redundant "Docs" link from navbar - Migrated from "menu" to "groups/pages" structure - Added comprehensive page organization with nested groups: * Introduction, Getting Started, Features * Prompting Skills, Cline's Tools, Enterprise Solutions * MCP Servers, Provider Configuration - Organized features into logical subgroups (@ Mentions, Commands, Customization, Slash Commands) - Improved documentation discoverability and hierarchy This change provides better content organization and easier navigation for users exploring different aspects of Cline documentation. * docs: remove contextual options from documentation config Remove the contextual configuration section containing the "copy" option from docs.json. This simplifies the documentation configuration by removing unused contextual menu options. * docs(multiroot): improve workspace documentation with limitations and technical details - Add important note about experimental limitations affecting Cline rules and checkpoints - Add "How it works" section explaining automatic workspace detection and tracking - Reorganize technical behavior section with detailed subsections for workspace detection, path resolution, and command execution - Document workspace hint syntax for explicit file references (@workspaceName:path) - Standardize heading capitalization to sentence case for consistency - Improve overall content organization and clarity for better user understanding This update provides users with clearer information about the multiroot feature's current state, its limitations, and how to effectively use workspace hints when working with multiple project folders. * docs: restructure overview page with enhanced visual layout - Convert plain markdown sections to CardGroup and Card components with icons - Add tabbed interface for Plan & Act Mode explanation - Update description from "development assistant" to "coding agent" - Reorganize content for improved readability and visual hierarchy - Enhance feature presentations with icon-based cards Improves user experience by transforming the overview documentation into a more visually appealing and scannable format using modern documentation components. * docs: improve installation guide with enhanced structure and UX Restructure the Cline installation documentation to improve readability and user experience: - Add prominent note highlighting 2-minute installation time - Convert prerequisites into visual card components for better clarity - Transform installation steps into structured Step components for easier following - Add manual installation instructions for JetBrains IDEs - Include feature compatibility accordion for JetBrains users - Enhance visual hierarchy with improved component usage (CardGroup, Steps, Accordion) - Simplify language and improve descriptions throughout This makes the installation process clearer for new users and reduces friction during onboarding. * style(docs): remove text opacity reduction for better readability * docs: refactor model selection guide with visual step-by-step instructions - Replace tab-based layout with linear step-by-step flow - Add screenshots for each configuration step (config, provider, API, model) - Reorganize content structure for improved clarity and user experience - Add quickstart options and streamlined provider recommendations - Improve navigation with visual aids to help users configure Cline faster * docs: add installation screenshots and context management guide * docs: flatten provider config structure in documentation Remove the "Alternative Providers" grouping and move all provider configuration pages (OpenRouter, Cerebras, DeepSeek, Groq, xAI Grok, Mistral AI, Doubao, Fireworks, and ZAI) to the main provider configuration list. This simplifies the documentation navigation by treating all providers equally rather than categorizing some as alternatives. * docs: restructure context management docs and improve content clarity **Changes:** - Reorganized documentation structure by moving context management from `/best-practices` to `/prompting` section for better categorization - Added URL redirect to maintain backward compatibility for old links - Updated navigation references in welcome page to point to new location - Improved readability of context management explanations with more narrative, conversational prose - Enhanced context window documentation by adding cache tokens indicator and using emoji-based formatting for better visual clarity - Streamlined Cline Memory Bank setup instructions from 4 to 3 steps - Updated context bar screenshot to use newer image asset **Why:** Better documentation organization and improved user experience through clearer explanations of how Cline builds and manages context during tasks. * docs(context-management): convert Quick Reference to Info component Replace blockquote formatting with Info component for the Quick Reference section in the context management documentation. This improves visual presentation and maintains consistency with documentation standards. Also removes trailing whitespace at the end of the file for cleaner formatting. * docs: add Cline Enterprise overview and restructure enterprise section - Add comprehensive enterprise overview documentation covering security, governance, observability, and developer experience features - Rename "Enterprise & Security" navigation group to "Enterprise" - Consolidate enterprise documentation by replacing 4 pages with 2: new overview page and security concerns - Document BYOI (Bring Your Own Inference), SSO authentication, and role-based access control capabilities This restructuring provides a clearer entry point for enterprise users and consolidates previously scattered enterprise information into a cohesive overview document. * docs(enterprise): streamline enterprise overview and update font - Change documentation font from Geist Mono to Geist Sans - Add enterprise website link card for detailed information - Remove Developer Experience, Proven at Scale, and Pricing sections - Consolidate Flexible Inference section content - Simplify enterprise overview to focus on core capabilities These changes reduce redundancy by directing users to the enterprise website for pricing and detailed features while keeping the docs focused on technical implementation and core capabilities. * clean-images * Update docs/getting-started/installing-cline.mdx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/styles.css Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * docs(cline-cli): add platform availability warning to overview Add a prominent warning callout indicating that Cline CLI is currently in preview and only supports macOS and Linux, with Windows support coming soon. This sets clear expectations for users about platform compatibility. Also remove redundant introductory text in the "What you can build with this" section to improve content clarity. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|
|
ec543a230f |
make cli version built in rather than reading the package.json at runtime (#6910)
Co-authored-by: Andrei Edell <andrei@nugbase.com> |
||
|
|
e9eb7ae179 |
fix(cli): Add telemetry settings support to Go host bridge (#6906)
* build: add npm package build script with telemetry injection Add a new build script that automates the NPM package creation process with proper telemetry key injection. The script: - Validates required environment variables (TELEMETRY_SERVICE_API_KEY, ERROR_SERVICE_API_KEY) - Verifies Node.js can access environment variables - Builds Go CLI binaries for all platforms - Compiles standalone package with esbuild - Verifies telemetry keys are properly injected into compiled code - Provides colored output and detailed error messages Added npm script `build:npm` to package.json for easy invocation. This ensures consistent builds with telemetry properly configured for production deployments. * feat(hostbridge): add telemetry settings support for CLI mode Add GetTelemetrySettings and SubscribeToTelemetrySettings methods to EnvService to handle telemetry configuration in CLI mode. - GetTelemetrySettings retrieves telemetry status from POSTHOG_TELEMETRY_ENABLED environment variable - SubscribeToTelemetrySettings provides a stream for telemetry setting updates, sending initial state and keeping stream open - In CLI mode, telemetry settings are static and determined by environment variable at startup This enables proper telemetry control and monitoring in CLI environments. |
||
|
|
5152b970c0 |
fix version output with cli ver + core ver (#6899)
Co-authored-by: Andrei Edell <andrei@nugbase.com> |
||
|
|
b2e3e9b3f9 | Allow package secrets when publishing the nightly release (#6884) | ||
|
|
aa2cbc39a4 |
bubbles (#6871)
* bubbles * making the input look nicer * okay nice - clearing properly * not allowing input while streaming command output * better placeholder text * way better resize handling |
||
|
|
3c3188073b |
Fix: cline provider auth should print url in case it doesn't auto-open (#6873)
Co-authored-by: Andrei Edell <andrei@nugbase.com> |
||
|
|
8e3ee11966 |
Man page for cline command, and build system to do it (#6870)
* cline manpage * completed man cline --------- Co-authored-by: Andrei Edell <andrei@nugbase.com> |
||
|
|
9be3fa5acf |
NPM install for cline (#6861)
* WIP npm publish setup * verbose startup + error if cline core not found * working npm release * modifications for linux npm package to work * remove publish npm workflow for now * readme & package.json tweaks * fix old reference to compile-standalone-cli in test workflow --------- Co-authored-by: Andrei Edell <andrei@nugbase.com> |
||
|
|
814988c929 | feat(cli): add local installation script with improved build process (#6834) | ||
|
|
cdffc002eb |
feat(telemetry): add OpenTelemetry integration (#6605)
* feat: Modular telemetry architecture with Jitsu provider support - Add dual-provider telemetry architecture supporting both Jitsu and PostHog - Implement JitsuTelemetryProvider with full API compatibility - Add required telemetry bypass for critical system health events - Create modular event handler base class for future extensibility - Add Jitsu configuration with environment variable controls - Update TelemetryService to support multiple providers with error isolation - Add .env.example template for development setup - Maintain backward compatibility with existing PostHog integration - Enable easy PostHog removal via POSTHOG_TELEMETRY_ENABLED=false - Install dotenv for local development environment support Key benefits: - Dual tracking during transition period - Error isolation between providers - Memory efficient static method architecture - Easy provider enable/disable via environment variables - Wednesday deployment ready for Jitsu migration * fix(build): Load environment variables from .env file during development builds - Add dotenv.config() to esbuild.mjs to load .env variables - Include all telemetry-related environment variables in build injection: - TELEMETRY_SERVICE_API_KEY (PostHog) - ERROR_SERVICE_API_KEY (PostHog error tracking) - JITSU_WRITE_KEY (Jitsu telemetry) - JITSU_HOST (Jitsu host URL) - JITSU_ENABLED (Jitsu provider control) - POSTHOG_TELEMETRY_ENABLED (PostHog provider control) This ensures telemetry services work correctly in development builds by properly injecting API keys and configuration from .env file. Also updates TelemetryService tests to support multi-provider architecture. * fix(telemetry): Replace Record<string, unknown> with proper JSON-serializable types - Add TelemetryPrimitive, TelemetryValue, TelemetryObject, and TelemetryProperties types to ITelemetryProvider - Update JitsuTelemetryProvider to use TelemetryProperties instead of Record<string, unknown> - Update PostHogTelemetryProvider to use TelemetryProperties instead of Record<string, unknown> - Update TelemetryService to use TelemetryProperties for type-safe telemetry data - Ensures all telemetry properties are JSON-serializable, preventing runtime errors - Fixes TypeScript compatibility issue between Jitsu's JSONObject type and Record<string, unknown> * moved and organized the telemetry files and updated the example env file to be more descriptive * refactor: remove Jitsu telemetry provider - Remove Jitsu provider implementation and config files - Remove Jitsu environment variables from .env.example - Remove Jitsu build configuration from esbuild.mjs - Update TelemetryProviderFactory to only support PostHog - Uninstall @jitsu/js dependency - Add .env to .gitignore to prevent committing local env files * chore: add changeset for Jitsu removal * removed jitsu * fix: update import paths after PostHogClientProvider relocation * fix: remove race condition in captureToProviders and reorganize PostHog providers - Changed captureToProviders from async to synchronous method - Removed unnecessary Promise.allSettled overhead since provider.log() and provider.logRequired() are synchronous - Changed from .map() to .forEach() for better clarity - Moved PostHog provider files into posthog/ subdirectory for better organization - Updated all import paths to reflect new folder structure * refactor(telemetry): remove unnecessary addProperties method and improve type safety - Remove addProperties helper method that used 'any' types - Replace with inline typed spread operations in capture(), captureRequired(), and identifyAccount() - Fix type errors in captureConversationTurnEvent and captureBrowserError - All telemetry properties now properly typed as TelemetryProperties - Ensures OpenTelemetry compatibility through type system enforcement * refactor: remove dotenv dependency and use launch.json envFile - Remove dotenv import and config() call from esbuild.mjs - Add envFile parameter to all launch.json configurations to load .env - Remove dotenv from package.json devDependencies Environment variables are now loaded via VSCode's envFile feature for local development, while CI/production continues to inject via GitHub Actions. This provides cleaner separation between build-time and runtime environment handling. * feat(telemetry): add browser telemetry properties and improve typing - Add remoteBrowserHost and endpoint fields to browser telemetry events - Replace generic Record<string, unknown> with TelemetryObject type in EventHandlerBase for better type safety - Import TelemetryObject type from ITelemetryProvider These changes enhance browser telemetry tracking capabilities and improve type consistency across the telemetry service. * feat(telemetry): add OpenTelemetry integration Add comprehensive OpenTelemetry support alongside existing PostHog telemetry: - Add OpenTelemetry provider with metrics and logs/events support - Support multiple exporters: console, OTLP (gRPC/HTTP/Protobuf), and Prometheus - Implement flexible configuration via environment variables - Add detailed .env.example documentation with usage examples - Integrate with existing telemetry infrastructure via TelemetryClient - Support independent or parallel operation with PostHog - Add proper attribute flattening for OpenTelemetry primitives - Include configurable export intervals and protocols This enables users to export telemetry data to any OpenTelemetry-compatible backend (Grafana, Jaeger, etc.) while maintaining backward compatibility with PostHog integration. * add changeset * Update packages * .vscodeignore * fixed type error * fix(telemetry): Fix OpenTelemetry gRPC exporter endpoint format - Strip http:// prefix from gRPC endpoints (gRPC requires 'localhost:4317' not 'http://localhost:4317') - Clean up debug logging from OpenTelemetry provider classes - Add helpful comment to .env.example about gRPC endpoint format This fixes the issue where metrics were being recorded in-memory but silently failing to export to the OpenTelemetry collector. Metrics now flow end-to-end from the extension through the collector to Prometheus. Verified working with test infrastructure at ~/code/@cline/cline-otel-testing * merged from main and handled conflcits * fix: ensure exportTimeoutMillis is less than exportIntervalMillis in OpenTelemetry metrics Changed the timeout calculation to dynamically compute as 80% of the export interval, capped at 30 seconds. This fixes the error: 'exportIntervalMillis must be greater than or equal to exportTimeoutMillis' that occurred when the configured interval was less than 30 seconds. * feat(otel): add insecure gRPC connection support for development - Add OTEL_EXPORTER_OTLP_INSECURE config option - Support insecure (non-TLS) gRPC connections for local testing - Update OpenTelemetryClientProvider to use grpcCredentials.createInsecure() - Add comprehensive debug logging for troubleshooting - Tested and validated with local OTel collector This enables testing of OTLP gRPC protocol without TLS certificates, useful for local development and testing environments. * feat(otel): add comprehensive debug logging for troubleshooting - Add configuration summary logging at initialization - Log all exporter creation steps with success/failure status - Log connection details (protocol, endpoint, insecure mode) - Log header presence (keys only, not values for security) - Add try-catch blocks around exporter creation with error logging - Log reader/processor counts for validation - Improve visibility for TLS handshake and authentication issues * test: validate HTTP/Protobuf protocol with path appending fix - Tested HTTP/Protobuf exporter with binary encoding - Confirmed path appending fix works for /v1/metrics and /v1/logs - Validated bearer token authentication over HTTP/Protobuf - All exports successful with complete data fidelity - Documented test results in scenario-5-http-protobuf.md Test Status: ✅ PASSED - HTTP/Protobuf production ready * pre-cleanup * refactor(telemetry): clean up OpenTelemetry provider architecture Major refactoring to improve code quality, maintainability, and align with domain-driven design principles: **Architecture Improvements:** - Created OpenTelemetryExporterFactory with pure functions for exporter creation - Extracted exporter logic from OpenTelemetryClientProvider into factory - Removed Prometheus support (not a requirement) - Simplified diagnostic logging with minimal wrapper gated by TEL_DEBUG_DIAGNOSTICS flag **Interface & Provider Updates:** - Extended ITelemetryProvider with optional incrementCounter() and recordHistogram() methods - No OpenTelemetry types leak into provider interface (provider-agnostic) - Implemented no-op metric stubs in PostHogTelemetryProvider - Removed eventCounter from OpenTelemetryTelemetryProvider (was incorrectly tracking events as metrics) - Added lazy counter/histogram creation with Map caches in OpenTelemetry provider - Logs are now the primary telemetry path, metrics are optional/future-ready **Code Quality:** - ~50% reduction in complexity through factory pattern - Clear separation of concerns between interface, implementation, client management, and exporter creation - Improved testability with pure functions and lazy instrument creation - Better maintainability with cleaner code structure **Configuration:** - Updated .env.example with comprehensive OpenTelemetry documentation - Added TEL_DEBUG_DIAGNOSTICS flag for enabling diagnostic logging - Clarified all configuration options with detailed comments - Removed Prometheus references **Verified Working:** - All protocols tested and working: gRPC, HTTP/JSON, HTTP/Protobuf - Bearer token authentication validated - Console exporter functional - Maintains full compatibility with TelemetryService interface * OTel: make flattenProperties circular-safe with depth guard and array truncation Use WeakSet to detect circular references; add MAX_DEPTH=10; limit arrays to 100 items with _truncated and _original_length flags; handle Date via toISOString and Error via message; skip __proto__, constructor, prototype keys; wrap JSON.stringify in try/catch. * security: restrict sensitive OTel logging to debug mode only Only log OTLP endpoints and header information when TEL_DEBUG_DIAGNOSTICS=true or IS_DEV=true. In production mode, only show whether these values are configured without exposing actual values. This prevents sensitive infrastructure details and authentication information from appearing in production logs. * removed debug logging from non debug mode * feat: add batch configuration for OpenTelemetry log processor Add configurable batch settings for BatchLogRecordProcessor to allow tuning for different use cases: - OTEL_LOG_BATCH_SIZE: Maximum logs per batch (default: 512) - OTEL_LOG_BATCH_TIMEOUT: Maximum wait time in ms (default: 5000) - OTEL_LOG_MAX_QUEUE_SIZE: Maximum queue size (default: 2048) Benefits: - High-volume scenarios can increase queue size to prevent dropped events - Real-time monitoring can reduce timeout for faster exports - Low-volume scenarios can reduce batch size to minimize delays All settings are optional with sensible defaults matching OpenTelemetry SDK standards. Configuration is validated to ensure positive values. * feat(telemetry): add build-time OpenTelemetry environment variable injection Add support for injecting OpenTelemetry configuration at build time from GitHub Actions secrets, following the same pattern as PostHog telemetry. This enables production builds to have default OpenTelemetry collector configuration while still allowing runtime overrides. Changes: 1. esbuild.mjs: - Added build-time injection for 7 OpenTelemetry environment variables: * OTEL_TELEMETRY_ENABLED - Enable/disable OpenTelemetry * OTEL_LOGS_EXPORTER - Logs exporter type (console/otlp) * OTEL_METRICS_EXPORTER - Metrics exporter type (console/otlp) * OTEL_EXPORTER_OTLP_PROTOCOL - OTLP protocol (grpc/http/json/http/protobuf) * OTEL_EXPORTER_OTLP_ENDPOINT - Collector endpoint URL * OTEL_EXPORTER_OTLP_HEADERS - Authentication headers (e.g., bearer tokens) * OTEL_METRIC_EXPORT_INTERVAL - Metric export interval in milliseconds - Variables are read from process.env at build time and injected into the bundle via esbuild's define option - Follows exact same pattern as existing PostHog API key injection 2. .github/workflows/publish.yml: - Added OpenTelemetry environment variables to 'Package and Publish Extension' step - Variables are populated from GitHub Actions secrets - Applied to both release and pre-release builds 3. .github/workflows/publish-nightly.yml: - Added same OpenTelemetry environment variables to nightly builds - Ensures consistent configuration across all build types How it works: - Build Time (Production): * GitHub Actions reads secrets and sets environment variables * esbuild.mjs injects these values into the bundled code * Production builds ship with default OpenTelemetry configuration - Runtime (Development): * Developers use .env file with their own configuration * No changes needed to existing development workflow - Runtime (Production): * Users can override build-time defaults by setting environment variables * Runtime values take complete precedence over build-time defaults * Enterprise users can point to their own collectors Next steps: - Add GitHub secrets to repository (Settings → Secrets and variables → Actions) - Required secrets: OTEL_TELEMETRY_ENABLED, OTEL_LOGS_EXPORTER, OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS - Optional secrets: OTEL_METRICS_EXPORTER, OTEL_METRIC_EXPORT_INTERVAL Benefits: - Consistent with existing PostHog telemetry pattern - Secure: production secrets stay in GitHub, not in code - Flexible: users can override defaults at runtime - Development-friendly: .env file continues to work as before - Production-ready: default collector configuration for all users * removed ai slop * updated lock file * fix: use ExtensionRegistryInfo.version for cross-platform compatibility Replace process.env.npm_package_version with ExtensionRegistryInfo.version in OpenTelemetry service version to ensure compatibility across VSCode, JetBrains, and CLI environments. Addresses PR #6605 inline comment from Sarah Fortune (sjf) * fix: restore package-lock.json with proper biome dependencies Fixes CI test failures caused by corrupted biome package entries. Restores package-lock.json from main and reinstalls to properly update OpenTelemetry dependencies while preserving biome integrity. Addresses PR #6605 comment from Sarah Fortune (sjf) about test failures --------- Co-authored-by: NightTrek <Daniels@dual4t.com> Co-authored-by: Daniel Steigman <35793213+NightTrek@users.noreply.github.com> |
||
|
|
fc32061c35 | packaging ripgrep cli (#6805) | ||
|
|
7135fe4c49 |
feat: Add version information injection to CLI build script (#6780)
* feat: add version information injection to CLI build script - Extract version from package.json - Capture git commit hash, build date, and builder info - Inject version info into CLI binaries via Go ldflags - Update both cline and cline-host builds with version data * chore: add changeset for CLI version injection |
||
|
|
1241a2fce2 |
some chill cleanup (#6799)
* some chill cleanup * more cleaning |
||
|
|
128b721c0e | initial (#6779) | ||
|
|
0858ff517a |
Fix CLI installation script (#6760)
* feat(install): improve CLI release detection and error handling - Redirect error messages to stderr for proper error stream handling - Filter releases to only match tags ending in '-cli' suffix when fetching latest - Add explicit .tar.gz extension matching in download URL detection - Improve error messages to be more specific about missing packages - Add informative messages about which CLI release is being installed This ensures the install script correctly identifies CLI-specific releases and provides better feedback when releases or platform packages are not found. The stderr redirection prevents error messages from being captured in command substitutions. * feat(install): improve shell detection and PATH configuration - Add support for fish shell and XDG_CONFIG_HOME standard - Check if bin directory is already in current PATH before modifying config - Detect shell from $SHELL variable instead of relying on version variables - Create default config file if none exists for the detected shell - Use grep -Fq for more reliable PATH entry detection - Support multiple possible config file locations per shell (zsh, bash, fish) This improves the installation experience across different shell environments and prevents duplicate PATH entries when re-running the installer. * refactor * better install script --------- Co-authored-by: pashpashpash <nik@nugbase.com> |
||
|
|
3472e6068c |
Standalone CLI Installation (#6689)
* Phase 1 download node binary * Phase 2 include cli binaries * Phase 3 add scripts * Phase 4 bug fix * Phase 5: adding install script * Phase 6: pushing github actions * Phase 7: fixing redundancy * Phase 7: fixing redundancy * Temporary commit for workspace stuff * Fix tests * Fix tests * Fix tests * Fix tests * Fix tests * Fix tests * Fix tests * Adding JB fixes * Adding JB fixes * Adding CLI-JB fixes * Refactor * Refactor * refactor * Update release-standalone.yml Remove VSCode packaging env vars from CLI workflow. --------- Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com> |
||
|
|
a09f70023e | remove emojis (#6746) | ||
|
|
2917cd234c |
Provider scripts (#6668)
* Provider auth scripts * changeset * Updated default providers for script |
||
|
|
541b51c0fb |
Add watch build script (#6655)
* add dev command for cline-core changes for cli * add cli watch build command * remove other script |
||
|
|
097f8e6239 |
cline cli super alpha (#6644)
* super sketchy big merge with main * gitignore * gitignore * Delete cli/bin/air * Delete cli/bin directory * Delete cli/cline-host * Fix missing package.json in cli Copy the package JSON into the dist-standalone dir during compilation. Remove workaround for missing package.json * Update scripts/build-cli.sh Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Remove reference to watchservice, it has been removed * Update scripts/build-go-proto.mjs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix timestamp to string conversion * diff.go ellipsis fix * COMMON_TYPES --------- Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|
|
afa3eed7eb |
Update scripts/runclinecore.sh to include platform specific node module path (#6618)
With the introduction of better sqlite, this script needs to set the correct path for platform specific node modules. The logic is copied from the JB plugin (the vscode extension does not set the node modules path). |
||
|
|
d1fc59758e |
Reduce Test Workflow Time by 45% and Enable Qlty Coverage on Main (#6374)
* improving test workflow * testing pipeline improvement * testing new run * adding missing protos * adding previous cache + restoring dev dep version * restoring webview package lock * scripts update * fixing old flaky test * fixing old flaky test * changeset update * adding test-platform-integration again * adding quality check for integration platform |
||
|
|
a9bc4c7d67 |
Testing platform coverage (#6332)
Testing platform coverage |
||
|
|
58b0ea9afa |
Run Testing platform within Test workflow [shadow] (#6273)
Run Testing platform within Test workflow [shadow] |
||
|
|
767b81b22b |
Improve standalone startup times (#6272)
Improve standalone startup times |
||
|
|
5db4970c7d |
Enhance Testing Framework - Improve non-deterministic scenarios + fix flag (#6244)
Enhance Testing Framework - Improve non-deterministic scenarios + fix flag |
||
|
|
43006ca401 | Update runclinecore.sh script (#6300) | ||
|
|
683096aed7 |
Interactive playwright script (#6222)
Interactive playwright script |
||
|
|
43a6e85d7a |
Add orchestrator script and improve standalone service for local testing (#6100)
Add orchestrator script and improve standalone service for local testing #6100 |