Commit Graph

6347 Commits

Author SHA1 Message Date
HeyItsChloe
5527e9736e Merge branch 'main' into APP-972/lead-capture-form 2026-03-20 06:38:22 -07:00
Vasco Schiavo
fb776ef650 feat(frontend): Add copy button to code blocks (#13458)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-20 18:20:25 +07:00
Abi
a75b576f1c fix: treat llm_base_url="" as explicit clear in store_llm_settings (#13471)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 11:14:15 +01:00
openhands
71b7d92e06 refactor(frontend): use shared isValidEmail from input-validation utils
Replace duplicate isValidEmail implementation in form-input.tsx with
the existing utility function from #/utils/input-validation to maintain
consistency across the codebase.

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-20 02:22:42 +00:00
Rohit Malhotra
63956c3292 Fix FastAPI Query parameter validation: lte -> le (#13502)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 20:27:10 -04:00
chuckbutkus
f75141af3e fix: prevent secrets deletion across organizations when storing secrets (#13500)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 19:34:12 -04:00
openhands
2d430e9cc0 Improve email validation and persist form state across views
- Update email validation regex to RFC-compliant pattern
- Lift formData state from InformationRequestForm to parent InformationRequest
- Export FormData interface and update component props
- Update tests with StatefulForm wrapper for controlled component

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 22:15:59 +00:00
dependabot[bot]
e4515b21eb chore(deps): bump socket.io-parser from 4.2.5 to 4.2.6 in /frontend in the security-all group across 1 directory (#13474)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-19 17:28:15 -04:00
aivong-openhands
a8f6a35341 fix: patch GLib CVE-2025-14087 in runtime Docker images (#13403)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 16:21:24 -05:00
openhands
d64fddef75 chore: remove unused code and translations
- Remove unused cloud.svg icon (cloud-minimal.svg is used instead)
- Remove extra blank line in home.tsx
- Remove 8 unused ONBOARDING translations that were never implemented:
  STEP1_TITLE, STEP1_SUBTITLE, SOFTWARE_ENGINEER, ENGINEERING_MANAGER,
  CTO_FOUNDER, PRODUCT_OPERATIONS, STUDENT_HOBBYIST, OTHER

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 20:47:09 +00:00
openhands
3f07327a18 refactor(tests): use createRoutesStub in information-request-form tests
- Replace vi.mock useNavigate with createRoutesStub per testing conventions
- Test actual navigation behavior instead of mocking navigate function
- Remove redundant loading state tests that don't work with real navigation

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 20:32:47 +00:00
Joe Laverty
f706a217d0 fix: Use commit SHA instead of mutable branch tag for enterprise base (#13498) 2026-03-19 16:24:07 -04:00
openhands
529f1d854e feat(frontend): redirect form submission to login page with modal
- Change login-cta Learn More button to navigate to /onboarding/information-request
- Redirect form submission to /login instead of homepage
- Move RequestSubmittedModal from home.tsx to login.tsx
- Update tests to follow conventions (use createRoutesStub)

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 20:22:57 +00:00
aivong-openhands
0137201903 fix: remove vulnerable VSCode extensions in build_from_scratch path (#13399)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Ray Myers <ray.myers@gmail.com>
2026-03-19 19:36:22 +00:00
aivong-openhands
49a98885ab chore: Update OpenSSL in Debian images for security patches (#13401)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 14:33:23 -05:00
openhands
05cfa59a3c feat(frontend): add email validation and loading state to lead capture form
- Add isValidEmail function with proper regex validation (rejects weak emails like a@b)
- Add loading state with isSubmitting to prevent double-submission
- Disable submit button and show 'Submitting...' text during submission
- Add i18n translations for ENTERPRISE$FORM_SUBMITTING
- Add comprehensive tests for email validation and loading state

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 18:54:08 +00:00
openhands
aa6623731e fix: update tests for information-request and intermediate pages
- Fix use-is-on-intermediate-page test to check correct paths
  (/onboarding/new-account-form and /onboarding/information-request)
- Fix information-request test to use correct i18n key
  (ENTERPRISE$SELF_HOSTED_CARD_DESCRIPTION)
- Mock useTracking hook to avoid QueryClient dependency

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 17:58:51 +00:00
openhands
a515a96f0a feat: add PostHog tracking for enterprise lead form submission
- Add trackEnterpriseLeadFormSubmitted function to use-tracking.ts
- Track form data on submit: requestType (saas/self-hosted), name, company, email, message
- Add inline styles to onboarding-layout.tsx to prevent FOUC
- Add 4 new tests for tracking behavior (25 total tests)

PostHog event: 'enterprise_lead_form_submitted'
Properties: request_type, name, company, email, message, plus common properties

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 17:41:29 +00:00
HeyItsChloe
1773afdcd7 add bg 2026-03-19 10:13:50 -07:00
Hiep Le
38648bddb3 fix(frontend): use correct git path based on sandbox grouping strategy (#13488) 2026-03-20 00:13:02 +07:00
Hiep Le
b44774d2be refactor(frontend): extract AddCreditsModal into separate component file (#13490) 2026-03-20 00:12:48 +07:00
Hiep Le
04330898b6 refactor(frontend): add delay before closing user context menu (#13491) 2026-03-20 00:12:38 +07:00
openhands
2963277639 style: update enterprise card dimensions and self-hosted descriptions
- Set desktop card dimensions: 438px width, 371.5px min-height
- Add rounded-2xl (16px border-radius) and border to cards
- Add separate short description for self-hosted card:
  'Deploy OpenHands on your own infrastructure. Full control over data, compliance, and security.'
- Keep longer description for form page CTA card:
  'Deploy OpenHands on your own infrastructure. Full control over your data, compliance, and security. Ideal for enterprises that require on-premises or private cloud deployment.'
- Add ENTERPRISE$SELF_HOSTED_CARD_DESCRIPTION i18n key with all 15 languages

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 17:02:46 +00:00
openhands
02d0d840ec refactor: show confirmation modal on homepage after form submit
- Update form to navigate to '/' with state { showRequestSubmittedModal: true }
- Update HomeScreen to check location state and show modal
- Modal renders on homepage, not on form page
- Clear location state after modal closes to prevent re-showing on refresh
- Update tests for new navigation flow

Flow:
1. User fills form and clicks Submit
2. Navigate to homepage with state
3. Homepage renders modal overlay
4. User clicks Done/Close -> modal closes, state cleared

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 16:51:57 +00:00
HeyItsChloe
1304306173 Merge branch 'APP-972/lead-capture-form' of https://github.com/OpenHands/OpenHands into APP-972/lead-capture-form 2026-03-19 09:48:19 -07:00
HeyItsChloe
3e79081089 cloud svg 2026-03-19 09:47:49 -07:00
openhands
f70c78e77f feat: add confirmation modal after form submission
- Create RequestSubmittedModal component matching design specs:
  - 448x170px, black background, border-radius 6px
  - Close button (X) at top right with 0.7 opacity
  - Title: 'Request submitted' (18px semibold)
  - Description text (14px, #8C8C8C)
  - Done button to dismiss and navigate to homepage
- Update InformationRequestForm to show modal on successful submit
- Navigate to '/' (homepage) when modal is closed
- Add i18n translations for modal text (15 languages):
  - ENTERPRISE$REQUEST_SUBMITTED_TITLE
  - ENTERPRISE$REQUEST_SUBMITTED_DESCRIPTION
  - ENTERPRISE$DONE_BUTTON
  - MODAL$CLOSE_BUTTON_LABEL
- Add unit tests for RequestSubmittedModal (10 tests)
- Update form tests for modal behavior (22 tests)

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 16:46:22 +00:00
openhands
de4f8f5f8e feat: show validation errors only after form submission attempt
- Remove always-visible red asterisk from required fields
- Add showError prop to FormInput for conditional error display
- Add hasAttemptedSubmit state to track form submission attempts
- Show red border only when: showError=true AND required AND empty
- Add aria-invalid attribute for accessibility
- Prevent form submission when required fields are empty
- Update unit tests for new validation behavior

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 16:31:41 +00:00
openhands
c3917fdcbe test: add unit tests for lead capture form components
- Add FormInput tests (15 tests)
  - Input/textarea rendering
  - Required field validation
  - Accessibility attributes (aria-label, aria-required)
  - Placeholder and type handling

- Add InformationRequestForm tests (17 tests)
  - Form field rendering
  - SaaS vs Self-hosted content switching
  - Form interaction and callbacks
  - Accessibility (button group, aria-labels)

- Add InformationRequest route tests (15 tests)
  - Page rendering and navigation
  - Card selection flow
  - Form display on Learn More click
  - Back navigation handling

- Add Card component tests (14 tests)
  - Theme variants (default, outlined, dark)
  - Hover variant (elevated)
  - Gradient variant (standard)
  - Combined variant behavior

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 16:25:38 +00:00
openhands
57f8f2c002 fix: revert unintended icon rename in CTA components
- Revert ServerIcon back to StackedIcon in login-cta.tsx
- Revert ServerIcon back to StackedIcon in context-menu-cta.tsx
- Revert test name back to 'stacked icon'

This PR should only add stacked icon to new files, not rename
existing icon usage.

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 16:20:49 +00:00
openhands
48d330f8b9 feat: add form validation and accessibility improvements
- Add required prop to FormInput with red asterisk indicator
- Make all form fields required (name, company, email, message)
- Add aria-label and aria-required attributes to inputs
- Add aria-label to all buttons (Back, Submit, Learn More)
- Add role='group' to button container
- Fix logo size inconsistency (55px → 56px)

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 16:11:29 +00:00
openhands
9ab08db6a1 refactor: improve CSS responsiveness
- Replace p-[25px] with p-6 (Tailwind default 24px)
- Remove fixed leading-[30px] from title (let browser handle)
- Remove fixed leading-[22.75px] from card description
- Replace h-10 with min-h-10 on inputs (allows growth)

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 16:01:31 +00:00
openhands
af41018121 content: update self-hosted description text
- Add full description for self-hosted option including:
  'Ideal for enterprises that require on-premises or private cloud deployment.'
- Updated all 15 language translations

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 15:53:13 +00:00
openhands
04e6c64ac1 refactor: add gradient variant to Card component
- Add gradient variant with 'standard' option to card.tsx
  - Semi-transparent background (#0A0A0A80)
  - Border-top color (#24242499)
  - Box shadow for depth
  - Radial gradient overlay via before pseudo-element
- Update information-request-form to use gradient='standard' variant
- Remove inline style overrides in favor of variant

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 15:46:06 +00:00
openhands
473bf910b6 style: update form layout to match design specifications
- Update container max-width to 896px with 32px gap
- Logo: 56x56px
- Title: 24px semibold, 30px line-height
- Subtitle: 14px regular, 20px line-height using Text component
- Form: max-width 544px with 16px gap between inputs
- FormInput: 40px height, 4px border-radius, #1F1F1F66 background
- CTA Card: 320px width using Card component with theme=dark
  - Custom gradient overlay and shadow
  - Icon: 40x40px
  - Title: 20px semibold, 28px line-height
  - Description: 14px, 22.75px line-height using Text component
- Responsive layout: stacks on mobile, side-by-side on desktop

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 15:40:49 +00:00
Chris Bagwell
120fd7516a Fix: Prevent auto-logout on 401 errors in oss mode (#13466) 2026-03-19 16:33:01 +01:00
openhands
4894619c9b refactor: rename StepInput to FormInput and use OpenHandsLogoWhite
- Rename step-input.tsx to form-input.tsx
- Rename StepInput component to FormInput
- Update imports in information-request-form.tsx and step-content.tsx
- Use OpenHandsLogoWhite instead of custom wave icon
- Delete unused wave.svg file

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 15:24:59 +00:00
chuckbutkus
2224127ac3 Fix when budgets are None (#13482)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 10:14:48 -05:00
openhands
37561714a6 feat: redesign information request form with two-column layout
- Add wave.svg icon for form header
- Redesign form with side-by-side layout: form fields left, info card right
- Show different content based on request type (SaaS vs Self-hosted)
- Different titles, subtitles, and message placeholders per type
- Use Card component for info card section
- Submit navigates to home page (/)
- Back returns to card selection view
- Update i18n translations for all form labels and placeholders

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 15:10:35 +00:00
aivong-openhands
2d1e9fa35b Fix CVE-2026-33123: Update pypdf to 6.9.1 (#13473)
Co-authored-by: OpenHands CVE Fix Bot <openhands@all-hands.dev>
2026-03-19 11:05:30 -04:00
openhands
de75609e7a feat: add information request form component
- Create InformationRequestForm component in features/onboarding
- Update information-request route to show form when Learn More is clicked
- Change back button to navigate to /login instead of browser history
- Add i18n translations for form fields (name, email, company, message)
- Form back button returns to card selection view

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 15:04:25 +00:00
openhands
fb33356041 fix: restore stacked.svg icon that was accidentally deleted
The stacked.svg icon was mistakenly deleted in a previous commit
but is still needed by information-request.tsx.

Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 14:54:05 +00:00
MkDev11
0ec962e96b feat: add /clear endpoint for V1 conversations (#12786)
Co-authored-by: mkdev11 <MkDev11@users.noreply.github.com>
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: tofarr <tofarr@gmail.com>
Co-authored-by: hieptl <hieptl.developer@gmail.com>
2026-03-19 21:13:58 +07:00
Engel Nyst
3a9f00aa37 Keep VSCode accessible when agent errors (#13492)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-19 14:46:56 +01:00
Hiep Le
e02dbb8974 fix(backend): validate API key org_id during authorization to prevent cross-org access (org project) (#13468) 2026-03-19 16:09:37 +07:00
Hiep Le
8039807c3f fix(frontend): scope organization data queries by organization ID (org project) (#13459) 2026-03-19 14:18:29 +07:00
Saurya Velagapudi
a96760eea7 fix: ensure LiteLLM user exists before generating API keys (#12667)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-18 17:16:43 -07:00
Saurya Velagapudi
dcb2e21b87 feat: Auto-forward LLM_* env vars to agent-server and fix host network config (#13192)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-18 17:07:19 -07:00
Tim O'Farrell
7edebcbc0c fix: use atomic write in LocalFileStore to prevent race conditions (#13480)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: OpenHands Bot <contact@all-hands.dev>
2026-03-18 16:49:32 -06:00
HeyItsChloe
abd1f9948f fix: return empty skills list instead of 404 for stopped sandboxes (#13429)
Co-authored-by: openhands <openhands@all-hands.dev>
2026-03-18 14:46:00 -06:00