Skip to content

1.16.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 May 15:56
2963442

What's Changed

  • Set up OpenHands CLI package structure with UV and Poetry by @malhotra5 in #1
  • Setup pre-commit for Python files by @malhotra5 in #3
  • Add PyInstaller packaging support for CLI binary by @malhotra5 in #5
  • Simplify lint commands in Makefile by @malhotra5 in #7
  • Create repo.md microagent with linting and documentation guidelines by @malhotra5 in #9
  • Update repo.md with project details and references by @malhotra5 in #11
  • Add GitHub workflow to test binary executable build by @malhotra5 in #13
  • Add simple agent interaction functionality by @malhotra5 in #10
  • Add macro style commands with dropdown window by @malhotra5 in #17
  • Make comment more truthful by @malhotra5 in #18
  • Clean README and add Development.md for build/developer guidance by @malhotra5 in #20
  • Add modern typing requirement to repo.md by @malhotra5 in #24
  • Update agent-sdk version and import paths by @malhotra5 in #26
  • Add repo.md with instructions for updating agent-sdk SHA by @malhotra5 in #29
  • Add confirmation mode to CLI by @malhotra5 in #30
  • Update agent-sdk SHA and remove openhands/code path manipulation by @malhotra5 in #35
  • feat(cli): add threaded Ctrl-P pause listener for synchronous SDK by @malhotra5 in #34
  • Clean up files by @malhotra5 in #36
  • Use dropdown for confirmation by @malhotra5 in #37
  • Add "No (with reason)" option to confirmation dialog by @malhotra5 in #39
  • Fix pause resume pause in confirmation mode by @malhotra5 in #38
  • re arrange tests by @malhotra5 in #42
  • Update agent-sdk SHA and remove openhands/code from Python path by @malhotra5 in #44
  • Add 'Always proceed (don't ask again)' option to confirmation mode by @malhotra5 in #43
  • Update sha by @malhotra5 in #46
  • Test conversation runner with fewer mocks by @raymyers in #48
  • Update README to reflect project relocation by @malhotra5 in #49
  • Chore: copy over V1 CLI from OpenHands/OpenHands repo by @malhotra5 in #50
  • Align OpenHands-CLI project configurations with agent-sdk by @malhotra5 in #51
  • Only set litellm_extra_body for litellm_proxy models by @xingyaoww in #56
  • Add code coverage collection and PR reporting to CI by @malhotra5 in #55
  • feat: implement support for skills and legacy microagents in CLI by @malhotra5 in #53
  • Fix: Check for openhands/ prefix instead of litellm_proxy in model name by @xingyaoww in #57
  • Update CLI visualizer to use horizontal rules instead of panels by @xingyaoww in #64
  • Fix model list display to show up to 10 models per provider by @xingyaoww in #74
  • Release 1.2.0 + 1.2.1 by @malhotra5 in #75
  • Fix binary artifact upload by @malhotra5 in #76
  • Fix: Set prompt_continuation to empty string for cleaner multiline input by @Chesars in #65
  • feat: Add --version/-v flag support to print CLI version by @xingyaoww in #113
  • ci: Add binary --version test to CI workflow by @xingyaoww in #116
  • feat(cli): add task & file params by @jwerner08 in #131
  • Restrict Python version to <3.14 to avoid tiktoken build issues by @xingyaoww in #133
  • Initial ACP Implementation by @xingyaoww in #69
  • Tweak SDK name by @enyst in #63
  • Add automatic version check and update prompt by @xingyaoww in #109
  • test: add coverage for verify_agent_exists_or_setup_agent by @tosincarik in #121
  • Remove -cli suffix requirement from release workflows by @malhotra5 in #137
  • Display version number in grey color for consistency by @xingyaoww in #139
  • Release 1.3.0 by @malhotra5 in #138
  • Add CI workflow to update PR descriptions with uvx launch instructions by @malhotra5 in #140
  • feat: Add --always-approve and --llm-approve CLI arguments for confirmation mode by @xingyaoww in #110
  • Load public skills in CLI by @xingyaoww in #149
  • Load .env at CLI startup to avoid python-dotenv stack-walk failures by @enyst in #162
  • Fix ACP session/new returning null session ID by @xingyaoww in #164
  • Release 1.4.0 by @malhotra5 in #165
  • fix: hardcode base_url for OpenHands provider in CLI by @xingyaoww in #168
  • Release 1.4.1 by @malhotra5 in #171
  • Fix malformed mcp.json error handling in ACP by @neubig in #153
  • Fix missing import and incorrect parameter names in ACP agent tests by @neubig in #172
  • Fix URL display by adding newlines to prevent truncation by @xingyaoww in #173
  • Refactor CLI UI by @malhotra5 in #141
  • Add metrics to ACP meta field by @xingyaoww in #175
  • Fix multi-line paste issue in single-line input mode by @malhotra5 in #177
  • Fix API key preservation in settings screen by @malhotra5 in #178
  • Add --exit-without-confirmation CLI parameter for refactor UI by @malhotra5 in #182
  • Add end-to-end test for experimental UI with --exp flag by @malhotra5 in #183
  • Refactor E2E tests into separate files with structured results by @malhotra5 in #184
  • Add status_line metric to ACP event metadata by @xingyaoww in #181
  • Chore: bump agent sdk by @malhotra5 in #187
  • Fix error display crash when error message contains XML special characters by @jpshackelford in #188
  • feat: implement headless mode with auto-exit functionality by @malhotra5 in #186
  • Implement slash commands and confirmation mode for ACP by @xingyaoww in #176
  • Feat: /condense command to force compact conversation history by @malhotra5 in #191
  • bump sdk by @malhotra5 in #197
  • Fix false positive on e2e test + binary executable packaging by @malhotra5 in #198
  • Release 1.5.0 by @malhotra5 in #195
  • CLI helper args to add/remove MPC servers by @malhotra5 in #185
  • feat: show conversation list and ability to resume latest conversation by @malhotra5 in #193
  • Fix MCP stdio server argument parsing with -- separator by @malhotra5 in #201
  • Add macOS Intel support to CI workflow by @malhotra5 in #190
  • Add Ubuntu ARM64 support to CI binary builds by @malhotra5 in #213
  • Add ConversationErrorEvent handling to conversation visualizer by @malhotra5 in #216
  • refactor: replace direct color usage with OPENHANDS_THEME colors by @malhotra5 in #219
  • Use public SDK imports instead of internal module imports by @malhotra5 in #217
  • Add OAuth 2.0 Device Flow CLI authentication by @malhotra5 in #192
  • Release 1.6.0 by @malhotra5 in #229
  • Update ACP help to list Toad CLI before Zed IDE by @malhotra5 in #233
  • feat: Delegate conversation to cloud by @malhotra5 in #230
  • Add workflow to update install-openhands-website on release by @malhotra5 in #237
  • test(cli): ensure help text mentions key subcommands and flags by @antznette1 in #156
  • feat: Add tabbed interface to settings modal by @malhotra5 in #231
  • Make experimental UI the default UI by @malhotra5 in #235
  • feat(mcp): Add enable/disable functionality for MCP servers by @jpshackelford in #242
  • Chore: reorganize files by @malhotra5 in #248
  • Feat: launch CLI as a browser app by @malhotra5 in #247
  • Add --json flag for json streaming in headless mode by @malhotra5 in #249
  • Fix none type error in cloud connection by @malhotra5 in #250
  • Use load_project_skills from SDK instead of custom implementation & upgrade to sdk 1.7.1 by @xingyaoww in #225
  • Add os description to AgentContext by @mathew1046 in #256
  • Bump SDK packages to v1.7.2 by @all-hands-bot in #266
  • Add --resume and --last flags support to openhands acp command by @xingyaoww in #265
  • Always create fresh condenser with current defaults on load by @xingyaoww in #263
  • Release 1.7.0 by @malhotra5 in #262
  • feat: implement streaming LLM outputs for ACP implementation by @malhotra5 in #254
  • Bump SDK packages to v1.7.3 by @all-hands-bot in #272
  • fix(cli): add terminal compatibility detection by @tosincarik in #205
  • fix: clipboard copy when copy button is pressed by @malhotra5 in #273
  • fix: Skip PR description update if uvx section already exists by @malhotra5 in #279
  • Chore: rename files and directories by @malhotra5 in #278
  • fix: use model_id without provider prefix when loading settings by @neubig in #280
  • Release 1.7.1 by @malhotra5 in #281
  • Skip PR description update for forked repos by @malhotra5 in #285
  • fix(tui): disable markup parsing for user messages to prevent crashes by @softpudding in #286
  • Fix confirmation panel scrolling when content is too long by @malhotra5 in #297
  • Move confirmation panel inline underneath action events by @malhotra5 in #299
  • feat: Add toggle for default cell expand/collapse state by @jpshackelford in #295
  • Add view command to display conversation trajectory by @xingyaoww in #290
  • Add /feedback command for users to send anonymous feedback about CLI by @malhotra5 in #293
  • Add pytest-textual-snapshot and integration tests by @xingyaoww in #259
  • Add stale issues workflow by @malhotra5 in #310
  • Release 1.8.1 by @malhotra5 in #306
  • feat: Add drag-to-select auto-copy feature for conversation events by @malhotra5 in #312
  • Add notification to restart CLI after settings change by @malhotra5 in #311
  • Print raw JSON when event validation fails by @xingyaoww in #313
  • Bump SDK packages to v1.8.1 by @all-hands-bot in #323
  • Use LLM-generated action summary instead of string truncation heuristic + UI Clean up by @xingyaoww in #303
  • Implement /new command to start a new conversation by @malhotra5 in #325
  • Release 1.8.2 by @malhotra5 in #326
  • fix: Correctly format LLM model names for litellm providers by @pashkash in #322
  • Truncate long terminal commands in collapsed view by @jpshackelford in #335
  • auth: prefer verification_uri_complete for OAuth device flow by @enyst in #319
  • Add AGENTS.md and link OpenHands repo guidance by @enyst in #340
  • feat: Show context window and cost metrics in status bar by @xingyaoww in #331
  • Make ACP token streaming the default behavior by @malhotra5 in #336
  • feat: Add dedicated plan window for agent task tracking by @malhotra5 in #315
  • chore: Remove unused 'Display Cost Per Action' setting by @xingyaoww in #347
  • Rewrite README by @malhotra5 in #337
  • Remove .openhands/skills/repo.md symlink by @enyst in #348
  • Chore: remove --exp feature flag by @malhotra5 in #350
  • Add external editor support with CTRL+X shortcut by @juanmichelini in #328
  • Bump SDK packages to v1.8.2 by @all-hands-bot in #354
  • Ignore whitespace-only reasoning_content in streaming by @xingyaoww in #351
  • Add test for Mistral XML function call syntax handling in visualizer by @malhotra5 in #210
  • fix(input): implement auto-growing input with soft wrapping by @malhotra5 in #276
  • feat(acp): Send LLM-generated summary to tool call title by @xingyaoww in #332
  • Release 1.9.0 by @malhotra5 in #359
  • Fix cloud login to respect llm_base_url from settings by @enyst in #361
  • (Hotfix): CLI crashes when opening MCP panel by @malhotra5 in #363
  • Patch release 1.9.1 by @malhotra5 in #364
  • feat: support agent setup via environment variables by @malhotra5 in #366
  • [Refactor]: Auto-login when cloud credentials are invalid by @malhotra5 in #368
  • Fix capitalization in command palette for Plan and Settings by @xingyaoww in #375
  • feat: send metadata for models using llm-proxy base URLs by @xingyaoww in #377
  • docs(CONTRIBUTING): Correct install pre-commit hooks command by @utkarsh-in in #374
  • fix: Issue with memory condensation not being editable by @BalasubramanyamEvani in #372
  • feat: Add details about recommended models and use cases in CLI settings (#246) by @BalasubramanyamEvani in #357
  • fix: require --override-with-envs flag to apply LLM env vars by @xingyaoww in #379
  • Clean-up dead-code in openhands-cli/argparsers by @VascoSch92 in #371
  • feat(tui): conversation history side panel by @pashkash in #333
  • Add workflow to bump agent-sdk versions by @malhotra5 in #380
  • Add workflow to bump version and create draft PR by @malhotra5 in #381
  • Bump openhands-sdk and openhands-tools to 1.9.0 by @all-hands-bot in #382
  • Add Critic Result Display in TUI by @xingyaoww in #360
  • Bump version to 1.10.0 by @all-hands-bot in #383
  • Add weekly type checking report workflow by @malhotra5 in #385
  • Feat: delegate tool for spawning sub-agents by @malhotra5 in #341
  • Exp: remote acp conversations by @malhotra5 in #277
  • Fix critic feedback text to include 'success' prediction by @xingyaoww in #391
  • feat: support auth for local ACP agent by @malhotra5 in #394
  • fix: pin rich<14.3.0 to fix autocomplete shutdown crash by @jpshackelford in #402
  • fix: display agent MessageEvents in TUI when critic is enabled by @jpshackelford in #400
  • (Hotfix): fix headless mode to work with env overrides + disable critic in headless mode by @malhotra5 in #388
  • Bump openhands-sdk and openhands-tools to 1.10.0 by @all-hands-bot in #417
  • Bump version to 1.11.0 by @all-hands-bot in #418
  • Remove spinner in headless mode, output status messages once by @malhotra5 in #420
  • Preserve condenser settings from agent_settings.json by @enyst in #390
  • feat: Load hooks from ~/.openhands/hooks.json in CLI by @neubig in #428
  • docs: clarify uv usage in AGENTS by @enyst in #425
  • cli: add --yolo as alias for --always-approve by @enyst in #424
  • feat(e2e): add mock LLM server and full UI e2e tests by @malhotra5 in #427
  • Add e2e snapshot test for creating agent plan trajectory + fix test flakiness by @malhotra5 in #432
  • Add e2e snapshot tests for initial setup flow by @malhotra5 in #433
  • Add E2E snapshot tests for history panel and conversation switching by @malhotra5 in #435
  • tui: hide slash commands from vertical scroll by @malhotra5 in #438
  • fix(tui): reset token metrics when creating new conversation by @malhotra5 in #439
  • Add E2E snapshot test for multi-line mode submission by @malhotra5 in #437
  • update critic feature description by @xingyaoww in #422
  • fix: critic - no module named posthog by @brettstewart in #448
  • fix(widgets): remove unnecessary type: ignore in collapsible.py by @github-actions[bot] in #458
  • docs: clarify lint before commits by @enyst in #467
  • ci: add daily good first issue labeler workflow by @enyst in #464
  • Add automated PR review workflow using OpenHands by @jamiechicago312 in #442
  • Add LMNR_PROJECT_API_KEY and all-hands-bot reviewer support by @neubig in #470
  • refactor: add reactive state management + decouple main app from conversation management by @malhotra5 in #421
  • Add e2e snapshot tests for confirmation mode by @malhotra5 in #479
  • docs: minor documentation tweaks by @enyst in #471
  • fix(tests): stabilize input cursor snapshots by @enyst in #476
  • Bump openhands-sdk and openhands-tools to 1.11.0 by @all-hands-bot in #461
  • add close button and Escape to dismiss history panel by @rstar327 in #454
  • Bump version to 1.12.0 by @all-hands-bot in #480
  • docs: clarify lint-before-commit guidance by @enyst in #460
  • refactor: use consolidated pr-review action from SDK by @xingyaoww in #477
  • fix: pass Laminar API key as action input in PR review workflow by @xingyaoww in #484
  • feat: Show loaded resources (skills, hooks, MCPs) and add /skills command by @xingyaoww in #474
  • ci: enhance type checking workflow with code quality analysis and auto-fix PRs by @malhotra5 in #455
  • feat: add OpenHands stop hooks for pre-commit validation by @xingyaoww in #487
  • chore: update skills path references by @enyst in #478
  • Bump SDK packages to v1.11.4 by @all-hands-bot in #495
  • Bump version to 1.12.1 by @all-hands-bot in #496
  • tui: remove grey vertical border from Collapsible widgets by @xingyaoww in #490
  • fix: default collapsibles to collapsed state by @xingyaoww in #504
  • test: update comment reference to OpenHands/extensions by @neubig in #505
  • tui: only show agent name prefix for non-default agents by @xingyaoww in #497
  • Settings: enable memory condensation by default in basic and advanced modes by @malhotra5 in #510
  • fix(tui): add ComposeResult return type hints to compose() methods by @github-actions[bot] in #509
  • fix: Clear values of settings modal using .clear() instead of setting as blank by @csmith49 in #514
  • Bump version to 1.12.2 by @all-hands-bot in #515
  • feat(tui): bind ctrl+a to select all text in input area by @malhotra5 in #511
  • test(snapshots): update select_all e2e snapshots for v1.12.2 by @malhotra5 in #522
  • ci: disable uv cache in untrusted agent workflows by @enyst in #521
  • fix(tests): make creating_agent_plan snapshot test deterministic by @malhotra5 in #524
  • Migrate PR review workflow to use extensions action by @neubig in #516
  • feat: add iterative refinement mode using critic model by @xingyaoww in #447
  • ci: disable pull_request_target for PR review by @enyst in #523
  • fix(Makefile): help and pre-commit by @VascoSch92 in #528
  • fix(types): add missing type hints to handle_resume_logic and _meta by @github-actions[bot] in #532
  • Bump SDK packages to v1.11.5 by @all-hands-bot in #527
  • fix(acp): send session/update after session/new response by @jpshackelford in #543
  • feat: add /settings slash command to open settings modal by @malhotra5 in #542
  • tui: implement conditional autoscrolling by @juanmichelini in #546
  • fix(acp): lazy-init ACP_CACHE_DIR to avoid import side effects by @github-actions[bot] in #531
  • Rename auth console helper and tighten request kwargs typing by @enyst in #482
  • feat: dropdown menu by @VascoSch92 in #550
  • ci: Update bump-version workflow to regenerate snapshot tests by @malhotra5 in #552
  • Bump version to 1.13.0 by @all-hands-bot in #553
  • docs: Add release procedure documentation by @malhotra5 in #554
  • Add timeout, max_tokens and max_size to the LLM settings configuration card by @joseluisll in #445
  • refactor(shared): extract parse_slash_command to shared module by @github-actions[bot] in #560
  • fix(types): add missing type hints to function parameters and init methods by @github-actions[bot] in #558
  • fix: remove unused runtime image pull and env var from gui_launcher by @neubig in #534
  • feat: round border by @VascoSch92 in #564
  • fix(web): derive URLs from request headers for reverse-proxy support by @xingyaoww in #570
  • refactoring(cli): print_console by @VascoSch92 in #578
  • fix(types): add missing return type annotations by @github-actions[bot] in #584
  • fix: bump agent-client-protocol to >=0.8.1 by @simonrosenberg in #587
  • refactoring(cli/tui): richlog visualizer by @VascoSch92 in #577
  • Bump version to 1.13.1 by @all-hands-bot in #589
  • feat(tui): colored status icon by @VascoSch92 in #590
  • fix(tui): consolidate duplicate get_conversation_summary logic by @github-actions[bot] in #595
  • Add GitHub issue templates for bug reports and feature requests by @jamiechicago312 in #441
  • fix(tui): add missing return type hints to TUI methods by @github-actions[bot] in #610
  • feat: make run-watch - Fast TUI Development by @VascoSch92 in #606
  • Add trusted-by logos to top of README by @jamiechicago312 in #617
  • Bump SDK packages to v1.15.0 by @all-hands-bot in #616
  • fix(types): add -> None return type to init methods by @github-actions[bot] in #620
  • Bump SDK packages to v1.16.0 by @all-hands-bot in #622
  • tui: refactor richlog visualizer rendering paths (#618) by @enyst in #621
  • fix(tui): add type alias for collapsible content parameter by @github-actions[bot] in #619
  • docs: update README trusted-by logos for dark mode by @jamiechicago312 in #625
  • tui: add tab navigation hint to footers (#512) by @ixchio in #581
  • build: add 7-day uv freshness guardrail by @enyst in #630
  • Bump SDK packages to v1.16.1 by @all-hands-bot in #637
  • Bump version to 1.14.0 by @all-hands-bot in #638
  • docs: add contributors section to README by @jamiechicago312 in #631
  • fix(tui): correct typo 'converastion' in notification message by @github-actions[bot] in #645
  • skills: add cli-release skill for guided release workflow by @xingyaoww in #628
  • feat(cloud): Migrate openhands cloud to V1 API endpoints by @sjathin in #643
  • ci: retire Blacksmith from all GitHub Actions workflows by @raymyers in #654
  • fix(setup): make Console injectable for better testability by @github-actions[bot] in #657
  • fix(acp): replace global _ACP_CACHE_DIR with @lru_cache by @github-actions[bot] in #559
  • feat: ensure backward compatibility for persisted conversations with DelegateTool by @VascoSch92 in #636
  • Bump SDK packages to v1.17.0 by @all-hands-bot in #662
  • fix(settings): reset max_input_tokens on model change by @cbagwell in #658
  • tests: prevent unawaited coroutine warnings in async tests by @llamantino in #665
  • cli: replace prompt_toolkit with rich for styled output by @llamantino in #666
  • build: enforce minimum uv version by @enyst in #667
  • makefile: avoid local .openhands writes during make test by @llamantino in #663
  • chore: rename ALLHANDS_BOT_GITHUB_PAT to PAT_TOKEN by @simonrosenberg in #684
  • chore: use OPENHANDS_BOT_GITHUB_PAT_PUBLIC by @simonrosenberg in #685
  • chore: add TODO for PAT rename in update-install-website.yml by @simonrosenberg in #690
  • tui: Add ESC/Ctrl+C/Ctrl-Q key bindings to modals by @cbagwell in #686
  • tui: make history panel keyboard navigable by @cbagwell in #688
  • fix(settings): preserve native modal Tab navigation in Settings by @cbagwell in #687
  • chore: use OPENHANDS_BOT_GITHUB_PAT_INSTALL_WEBSITE for install-openhands-website by @simonrosenberg in #691
  • Bump version to 1.15.0 by @all-hands-bot in #693
  • ci: run PR review on fork PRs by @enyst in #692
  • fix(tui): resolve 'no running event loop' in RichLogVisualizer (fixes #696) by @gwerneckp in #695
  • Bump SDK packages to v1.19.0 by @xingyaoww in #704
  • settings: clear stale max tokens on model identity change by @cbagwell in #697
  • feat: Register built-in subagents before conversation start by @VascoSch92 in #648
  • Bump openhands-sdk and openhands-tools to 1.19.1 by @all-hands-bot in #709
  • Bump version to 1.15.1 by @all-hands-bot in #710
  • fix: migrate login to V1 settings/users endpoints by @hieptl in #711
  • Bump SDK packages to v1.20.1 by @xingyaoww in #719
  • Bump SDK packages to v1.21.0 by @all-hands-bot in #724
  • fix: emit valid JSONL from --json mode by @si-stip-tessl in #717
  • docs(acp): add docstring to _ACPContext Protocol by @github-actions[bot] in #703
  • Bump version to 1.16.0 by @all-hands-bot in #728

New Contributors

Full Changelog: https://github.com/OpenHands/OpenHands-CLI/commits/1.16.0