Commit Graph
8032 Commits
Author SHA1 Message Date
Juan Pedro Michelini Jorge e05e569a3f Merge branch 'main' into test/provider-connections-e2e 2026-08-14 10:59:45 -03:00
openhands 0ef9c9e1b4 Rework model providers UI to provider-first (nested editable models)
Restructure the Model providers settings page around providers instead of
per-model connections (OpenHands/OpenHands#15492):

- Connect a provider once with a single API key; the key is held on the
  provider as a named secret server-side and never returned to the client
  (only an api_key_set boolean is exposed).
- Models are nested under a provider card and are individually editable and
  removable, with a + affordance to add a model to the same provider.
- Add-provider preset picker (Custom endpoint, OpenAI, Anthropic, Azure
  OpenAI, Foundry Local, Microsoft Foundry) opens a provider form.

Renames provider-connections -> model-providers across service, hooks,
constants, components, mocks and tests. Simplifies onboarding to the
raw-key profile save path. Adds provider i18n keys across all languages.

Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-14 05:09:25 +00:00
e6c90d6538 ci: remove broken QA Changes workflow (#16549)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: neubig <neubig@users.noreply.github.com>
2026-08-13 21:22:41 -04:00
openhands c16b6c8375 Align provider wizard profile limit 2026-08-13 12:21:34 -03:00
openhands ec9e91d7f7 Let provider wizard select all models 2026-08-13 11:58:52 -03:00
openhands 8ffb2f04f3 Keep provider wizard save flow bounded 2026-08-13 11:42:48 -03:00
openhands 853132ca01 Persist onboarding LLM as provider connection 2026-08-13 11:22:54 -03:00
openhands-release-bot[bot] 4f465f3cca chore(main): release 1.13.0 (#16413)
Co-authored-by: openhands-release-bot[bot] <290150379+openhands-release-bot[bot]@users.noreply.github.com>
v1.13.0
2026-08-12 21:46:20 -04:00
83ba34cce6 chore: bump SDK deps (software-agent-sdk 1.42.1, automation 1.7.1, typescript-client 1.38.0) (#16554)
Co-authored-by: neubig <neubig@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-12 21:16:34 -04:00
openhands 170a147081 Polish model providers empty state 2026-08-12 21:31:48 -03:00
openhands e0003905c8 Add custom endpoint fields to model providers 2026-08-12 18:44:18 -03:00
openhands 8b1ec8bf4b Align model providers settings with wireframes 2026-08-12 18:28:20 -03:00
Graham Neubigandopenhands 61dd776740 fix: drain pending MSW callbacks before jsdom teardown to stop ProgressEvent ReferenceError (#16558)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-12 16:32:55 -04:00
george larson 2e7136cb6a fix(context-meter): draw the ring track from the foreground, not a border token (#16534) 2026-08-12 10:40:29 -04:00
openhands e15dd301e3 fix: keep model selection cleared and probe key live on validate
- Clear/deselect in the wizard picker was immediately undone because the
  default-selection effect re-selected recommended models whenever the
  selection became empty. Run the default selection exactly once per
  pick-step entry via a ref instead.
- Refresh/Test connection now send live=true so validation performs a real
  key probe and the backend's verified flag is meaningful, matching the
  intended 'honest validation' behavior.
- Add a regression test for the Clear bulk action.

Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-12 14:24:46 +00:00
Joe CastleandJoseph Castle 500b4c533e fix: stop truncating the Basic LLM provider list at 100 entries (#16453)
Co-authored-by: Joseph Castle <josephrcastle@gmail.com>
2026-08-12 02:00:49 +00:00
openhands 2a956e1fca Follow #15492 wireframes: model picker + refresh/rotate/disconnect row
Implements the full Connect-a-Provider flow the issue describes.

Wizard (4-step):
- Step 1: vendor dropdown + masked key + helper line (save once, reuse,
  rotate later).
- Step 2: test connection on key-blur or button; green-check success with
  model count; inline error with Try again / Use a different key actions;
  defensive couldnt-fetch-catalog path.
- Step 3: model picker with checkboxes, Recommended (verified) tag, default
  selection = all recommended pre-checked, bulk actions (Select all
  recommended / Select all / Clear), and a More from vendor collapsible for
  non-recommended models.
- Step 4: save creates one LLM profile per selected model via the backend
  POST /connections/{id}/profiles endpoint (key bound by reference), with a
  confirmation summary and toast.

Connections section row now matches the wireframe:
Provider - N models - last refreshed X ago, with Refresh, Rotate key,
Disconnect actions.
- Renamed the action from Delete to Disconnect (issue label).
- Added Refresh (re-validate, live) and Rotate key (inline key-rotation
  input that PATCHes the connection key) actions.
- Renders last-refreshed relative time from lastValidatedAt.

Service/mutations/i18n:
- ProviderConnectionsService.createProfileFromConnection + types + normalizer.
- useCreateProfileFromConnection mutation hook.
- 22 new i18n keys across all 15 locales; declaration regenerated.
- MSW handler for POST /connections/{id}/profiles.

Tests: wizard (7), service (13), local-view (24) - all green; lint + prettier
+ typecheck + translation-completeness hooks pass.

Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-11 20:45:11 +00:00
openhands e7165ecfab Address review: no orphaned connections, honest validation, disconnect warning
- Connect wizard no longer leaves a half-connected record behind: it tracks the
  connection it created, rotates that same record's key on retry (instead of
  creating a duplicate every attempt), and deletes it on cancel/dismiss when
  validation never succeeded
- service/UI carry the backend's `verified` flag so a catalog-only lookup is not
  presented as an authenticated key; validateConnection gains a { live } option
  that forwards ?live=true
- deleteConnection returns the affected profiles; the connections section warns
  when disconnecting a key that profiles still reference
- MSW handlers updated to the new delete/validate response shapes
- remove the leftover draft scaffold test placeholder

Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-11 19:06:08 +00:00
Christopher HaugenandCopilot 2e1502f39d fix: spawn launcher services without implicit shell (#16093)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 19deb2d0-75af-4fcf-ac1d-a6933c00769f
2026-08-11 10:50:54 -04:00
c4593b8154 chore: enforce typed @openhands/typescript-client for agent-server API calls (no ad-hoc fetch) (#16508)
Co-authored-by: neubig <neubig@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-11 08:57:05 -04:00
21f0967c8f fix: resolve flaky ProgressEvent unhandled rejection in CI (#16504)
Co-authored-by: neubig <neubig@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-10 22:34:56 -04:00
708ce3d191 fix(automations): surface non-MCP-installable integrations instead of silently dropping them (#16324)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Graham Neubig <neubig@gmail.com>
Co-authored-by: neubig <neubig@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-11 02:25:09 +00:00
Mayank Joshi 32e359c29b refactor: replace positional createConversation params with an options object (#1587) (#16500) 2026-08-10 19:32:37 -04:00
openhands 0072ef1e1d feat: Connect-a-Provider wizard + connections section (issue #15492)
Consolidates the three frontend PRs (service, UI, i18n) into one.

- provider-connections-service.ts: raw-fetch service (local-only; throws
  ProviderConnectionsNotOnCloudError on cloud), snake/camel normalization,
  key never echoed back (only api_key_set boolean)
- use-provider-connections query hook + create/update/delete/validate
  mutation hooks, query keys
- MSW handlers for all 6 endpoints (in-memory Map, key stripped)
- ConnectProviderWizard modal (provider select -> key -> label -> validate
  shows catalog the key grants)
- ProviderConnectionsSection (list + re-validate + delete-confirm, cloud
  auto-hides via assertConnectionsSupportedLocally)
- Wired into llm-settings-local-view above LlmProfilesManager
- 24 i18n keys, fully translated across all 15 languages
- Path constants in constants/provider-connections.ts (kept out of the
  service file to satisfy no-direct-agent-server-calls guard)
- 10 service tests + 3 wizard tests; existing LlmSettingsLocalView test
  mocks the new hooks/wizard

Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-10 22:21:09 +00:00
Juan Pedro Michelini Jorge 5ca8769eec scaffold: provider-connections (draft) 2026-08-10 18:26:00 -03:00
be636f7141 feat: context window usage meter, usage drawer, and manual compaction (#16311)
Co-authored-by: Graham Neubig <neubig@gmail.com>
Co-authored-by: hieptl <hieptl.developer@gmail.com>
2026-08-10 23:04:29 +07:00
e8e6f45cc8 fix: disable chat input drag-resize when not bottom-anchored (OHE-3062) (#16479)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: allhands-bot <allhands-bot@users.noreply.github.com>
Co-authored-by: hieptl <hieptl.developer@gmail.com>
2026-08-10 14:18:04 +00:00
74391677d8 chore(deps-dev): bump the eslint group across 1 directory with 6 updates (#16467)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: neubig <neubig@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: allhands-bot <allhands-bot@users.noreply.github.com>
2026-08-10 09:36:30 -04:00
cf2c568573 feat: add ready-for-dev issue readiness gate with type-specific criteria (#16449)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: neubig <neubig@users.noreply.github.com>
2026-08-10 08:15:56 -04:00
dependabot[bot] e5366426b7 chore(deps-dev): bump lint-staged from 16.4.0 to 17.3.0 (#16471)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 08:05:49 -04:00
dependabot[bot] 96a46cd8b2 chore(deps): bump i18next-http-backend from 4.0.0 to 4.0.1 in the i18next group (#16463)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 07:52:49 -04:00
dependabot[bot] 2d45e70252 chore(deps): bump zustand from 5.0.12 to 5.0.14 (#16470)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 07:52:45 -04:00
dependabot[bot] dc14e79f85 ci(deps): bump docker/login-action from 4.5.2 to 4.6.0 in the actions group (#16461)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 07:35:21 -04:00
dependabot[bot] 6ebd20e649 chore(deps-dev): bump the react group with 2 updates (#16464)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 07:35:18 -04:00
dependabot[bot] d46cc20014 chore(deps-dev): bump the testing group with 2 updates (#16466)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 07:35:15 -04:00
dependabot[bot] c1e6654d63 chore(deps-dev): bump @eslint/eslintrc from 3.3.1 to 3.3.6 (#16469)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 07:35:12 -04:00
dependabot[bot] 191efec270 chore(deps): bump @microlink/react-json-view from 1.31.20 to 1.31.25 (#16472)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 07:35:09 -04:00
98155d1b87 feat(chat): add inline markdown artifact previews (#16185)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Graham Neubig <neubig@gmail.com>
Co-authored-by: hieptl <hieptl.developer@gmail.com>
2026-08-10 18:13:23 +07:00
73434d688b fix: make sidebar "Load more" discover folders, not folder contents (#16179)
Co-authored-by: hieptl <hieptl.developer@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 09:43:42 +00:00
b7e325e998 fix: make overflow menus usable on touch devices (#16101)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: hieptl <hieptl.developer@gmail.com>
2026-08-10 15:41:46 +07:00
eb85ed4566 feat(conversations): add client-side conversation archive (#16100)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Graham Neubig <neubig@gmail.com>
Co-authored-by: hieptl <hieptl.developer@gmail.com>
2026-08-10 15:01:38 +07:00
Rohit Malhotraandopenhands 68de5c5887 fix: configure agent-server telemetry in Canvas launchers (#16348)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-08 21:37:31 -04:00
OpenHands Botandopenhands 4470813ce5 fix: add postinstall message showing how to start agent-canvas (#16338)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-07 21:22:53 +00:00
openhands-release-bot[bot] 4d0fe4983b chore(main): release 1.12.0 (#16402)
Co-authored-by: openhands-release-bot[bot] <290150379+openhands-release-bot[bot]@users.noreply.github.com>
v1.12.0
2026-08-07 19:24:39 +00:00
Juan Pedro Michelini Jorgetandopenhands 7d897d7669 feat: clarify free OpenHands model endpoints (#16281)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-08-07 18:42:32 +00:00
openhands-release-bot[bot] 3c562fa694 chore(main): release 1.11.0 (#16357)
Co-authored-by: openhands-release-bot[bot] <290150379+openhands-release-bot[bot]@users.noreply.github.com>
v1.11.0
2026-08-07 14:53:43 -03:00
21d5e716b2 fix(metrics): fetch runtime conversation directly instead of removed cloud-proxy (#16392)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: allhands-bot <allhands-bot@users.noreply.github.com>
2026-08-07 16:43:19 +00:00
52fb583107 feat(conversations): add tag chips, overflow, and hovercard labels (#16346)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: hieptl <hieptl.developer@gmail.com>
2026-08-07 14:07:55 +00:00
Hiep Le 60d6a150b6 feat: add automation tag filter and recognition (#16388) 2026-08-07 19:28:32 +07:00
Hiep Le e882651e29 feat: add a typed agent action for launching local or Cloud child conversations (#16380) 2026-08-07 18:58:12 +07:00