* feat: add CLI update checker
Check for newer grok-dev releases when the interactive CLI starts and surface them through a startup modal, home banner, and update commands.
* ci: increase PR commit scan curl timeout to 300s
* ✨ Add built-in telegram-bridge command
- add a headless Telegram bridge entrypoint and reusable path resolver
- export the new bridge helpers and cover path defaults with focused tests
- document headless Telegram usage in the README and verify startup without the wrapper
* 🐛 Fix telegram bridge shutdown handling
- restore the CLI's default SIGTERM exit behavior for non-bridge commands
- let the headless telegram bridge own SIGTERM cleanup while it is running
- abort bridge startup and clear watchers/listeners when Telegram setup fails early
* ♻️ Share Telegram approval persistence
- move approved-user persistence into a shared Telegram settings helper
- reuse the helper from both the TUI pairing flow and the headless bridge
- keep the approval write path consistent while removing duplicated settings merge logic
* bump package.json version
---------
Co-authored-by: Ismail Pelaseyed <homanp@gmail.com>
* feat: add custom sub-agents with /agents TUI and reliable interrupt
- Custom sub-agents stored in ~/.grok/user-settings.json (name, model, instruction)
- Validation against known model IDs, reserved name protection
- Injected into system prompt and available via task tool in all modes
- /agents TUI modal for browsing, adding, editing, and removing sub-agents
- Custom agent name shown in task UI instead of generic "Sub-agent"
- Foreground bash/search tools now accept abort signals for real cancellation
- Esc interrupt aligned with queue-force path for consistent cancel behavior
* fix issues found in code review
* feat: add startup API key modal
Allow the interactive app to boot without a preconfigured API key and guide users into adding one in-app instead of exiting early. Persist explicit auth and model preferences so first-run setup and subsequent launches feel consistent.
* bump version
* format
* fix lint issues
* feat: add background agents and background bash processes (#161)
Add async background delegation system (delegate, delegation_read,
delegation_list) for read-only research that persists to disk and
notifies the session on completion. Extend bash tool with background
mode for long-running processes (dev servers, watchers) with companion
process_logs, process_stop, and process_list tools.
Cherry-picked from a10a337 — lost during merge of cursor/agent-new-architecture-b3d5.
* feat: add prompt queuing with follow-ups UI
Allow users to submit messages while the agent is processing. Queued
messages display in a follow-ups panel above the prompt and are
processed sequentially after the current response completes.
Cherry-picked from 299023b — lost during merge of cursor/agent-new-architecture-b3d5.
* chore: switch CI to Bun, remove unused files and dead code
- Update security workflow to use Bun instead of npm (fixes ERESOLVE peer dependency conflict)
- Delete unused files: hello.py, package-lock.json, .eslintrc.js
- Remove broken ESLint config and devDependencies (lint was non-functional)
- Remove unused exports: MODEL_GROUPS, Skill interface, formatDuration
* chore: update lockfile after removing ESLint dependencies
* fix: use ref for mode color to prevent stale closure in message borders
* feat: add Biome for linting and formatting, update CI workflow
- Add Biome as linter and formatter with project-appropriate config
- Add lint, format, format:fix, and lint:fix scripts to package.json
- Rename typecheck workflow to CI, switch from npm to Bun, add format
and lint steps alongside typecheck
- Auto-fix formatting and import ordering across all source files
* fix: improve cancellation flow and queued message editing
* fix: improve cancellation flow and prompt footer context display
* chore: update Bun version and refresh lockfile
- Replace custom OpenAI client with AI SDK streamText + @ai-sdk/xai
- Add standalone search_web and search_x tools via chat completions
- Fix follow-up messages by using isProcessingRef to avoid stale closures
- Fallback message history when result.response fails after stream errors
- Remove post-response status line, adjust input padding
Made-with: Cursor
- Remove borders, add search filtering with keyboard input
- Flat model list without category sections
- Blue accent color for current model highlight
- Fit-to-content modals with max height cap and scroll
- scrollChildIntoView for arrow key navigation
- Trim logo height by removing decorative lines
- Add accent color to theme
Made-with: Cursor
Major rewrite of the Grok CLI agent:
- Runtime: Bun-first (removed Node.js/tsx fallbacks)
- UI: Replaced Ink with OpenTUI (@opentui/react) terminal framework
- Tools: Simplified to bash-only (removed text-editor, search, morph, todo, confirmation tools)
- Search: Integrated X Search API and Web Search via xAI Responses API
- Models: Updated to all latest Grok models (grok-4, grok-4.20-beta, grok-4-1-fast, grok-4-fast, grok-3-mini)
- Agent: Streamlined agent loop with async generator streaming
- Client: Dual API support (Chat Completions for tool calling, Responses API for search)
- Removed MCP integration, confirmation service, token counter, Morph editor
- Updated tsconfig for OpenTUI React JSX
- Clean 10-file architecture in src/
Co-authored-by: Ismail Pelaseyed <homanp@users.noreply.github.com>
* feat: add support for global custom instructions
* Remove comments
* Fix import syntax for fs-extra module (#112)
* Fix import syntax for fs-extra module
* Fix import syntax for fs-extra module
* Fix import syntax for fs-extra module
* Fix missing newline at end of morph-editor.ts
* Add where to set the API key in the json file (#107)
* Fix diff generation showing entire file as changed (fixes#83) (#98)
The diff preview was showing the entire file as changed when only a few
lines were actually modified. This was caused by a broken change detection
algorithm that couldn't properly handle insertions and deletions.
Replaced the naive line-matching algorithm with a proper LCS (Longest
Common Subsequence) based diff algorithm using dynamic programming. This
produces minimal, accurate diffs that match what git diff shows.
Changes:
- Added computeLCS(): Computes longest common subsequence between old/new lines
- Added extractChanges(): Extracts actual change regions from LCS table
- Updated generateDiff(): Uses LCS-based change detection instead of broken algorithm
Impact:
- Diff previews now show only actual changes (e.g., 4 lines instead of 260)
- Drastically reduces context pollution in conversation history
- Matches git diff output accuracy
🤖 Contributed by ZDS-AI (https://zds.group)
* add model migration manager and new grok models (#124)
* minor tweaks
---------
Co-authored-by: jszczypk <janusz@fide.pl>
Co-authored-by: Ben Faerber <benfaerber@protonmail.com>
Co-authored-by: Joseph Cheek <jcheek@users.noreply.github.com>
Co-authored-by: Ismail Pelaseyed <homanp@gmail.com>
* Convert to ES and install with bun
* Delete package-lock.json
* Update README with bun info
* Update .gitignore
* Update .npmignore
* Bump version
* Unignore package lock
* feat: improve model configuration and settings management
- Refactor model configuration system with unified settings approach
- Add support for user-level default models and project-level current models
- Implement automatic saving of API key and base URL from command line arguments
- Remove model descriptions for cleaner UI and easier extensibility
- Fix commander.js subcommand argument parsing with fallback mechanism
- Improve configuration file structure and priority handling
- Add comprehensive model configuration utilities in src/utils/model-config.ts
Configuration priority: project current model > user default model > system default
Both main command and git subcommand now save credentials automatically
* refactor: unify settings management
- Add SettingsManager singleton for user/project settings
- Eliminate duplicate settings code across files
- Clear separation: user settings vs project settings
* docs: improve README clarity and organization
- Simplify setup section with quick start approach
- Consolidate configuration info into unified section
- Add clear explanation of user vs project settings
- Document OpenAI-compatible API support
- Remove duplicate model configuration sections
* bump sdk
---------
Co-authored-by: Ismail Pelaseyed <homanp@gmail.com>
* feat: add /commit-and-push for AI-generated commits and pushes
* fix: handle missing upstream branch in git push
* feat: add git commit-and-push subcommand with AI assistance
* feat: automate staging changes with git add in commit workflow
* chore: bump version to 0.0.12
* revert package json
* chore(release): bump version to 0.0.12