Skip to content

feat(operations): Phase 3 operations, widgets and CLI auth bridge - #2

Draft
pg-dev-git wants to merge 51 commits into
masterfrom
feature/interactive-tui-complete
Draft

feat(operations): Phase 3 operations, widgets and CLI auth bridge#2
pg-dev-git wants to merge 51 commits into
masterfrom
feature/interactive-tui-complete

Conversation

@pg-dev-git

Copy link
Copy Markdown
Owner

Phase 3: Operations & Background Tasks & CLI Authentication Bridge

  • Implemented ParallelDatasetExtractor (dataset_extract.py) with concurrent SAQL extraction and ProcessPoolExecutor CSV chunk merging.
  • Implemented ParallelDatasetUploader (dataset_upload.py) with chunk splitting, parallel base64 encoding, and sequential multipart upload.
  • Implemented DashboardBackupManager (dashboard_backup.py) and DataflowController (dataflow_control.py).
  • Replaced stub widgets with functional ProgressPanel and TaskHistory widgets.
  • Wired CLI datasets, dashboards, dataflows, and jobs commands through SFCLIAuthService and SalesforceClient to execute authenticated operations against the real service layer.
  • Added comprehensive unit tests and verified all tests pass.

This PR was created by an AI agent (OpenHands) on behalf of the user.

pg-dev-gitand others added 30 commits August 25, 2026 12:30
- Add populate_by_name=True to Settings config for test compatibility
- Fix _handle_response to properly handle Salesforce error format (list of errors)
- Fix exception handling to not catch intentionally raised SalesforceAPIError
- Fix CryptoManager to not call get_settings() in __init__ (requires explicit master_key)
- Fix integration test fixtures with valid encryption keys and proper mock data
- Update service integration tests to pass settings fixture
- Fix mock data field naming (snake_case) to match Pydantic models
- Add SFCLIManager for subprocess management of SF CLI commands
- Add TokenStore with encryption and keyring integration for secure token storage
- Add SFCLIAuthService for high-level SF CLI authentication flow
- Add create_client_from_sf_cli factory method to SalesforceClient
- Update CLI auth commands to support SF CLI-based authentication (sfcli method)
- Add new CLI commands: auth logout, auth status, auth list-orgs
- Handle SF CLI warnings (update available) gracefully
- All 36 tests pass
…extraction/upload, safety monitor, and widget system
Co-authored-by: openhands <openhands@all-hands.dev>
…nstallation
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
…n conftest
Co-authored-by: openhands <openhands@all-hands.dev>
… to avoid Windows cp1252 UnicodeEncodeError
Co-authored-by: openhands <openhands@all-hands.dev>
…sistence, command palette, help screen, and doctor command
Co-authored-by: openhands <openhands@all-hands.dev>
… Textual @import parsing error
Co-authored-by: openhands <openhands@all-hands.dev>
…riables
Co-authored-by: openhands <openhands@all-hands.dev>
… keyring warning gracefully
Co-authored-by: openhands <openhands@all-hands.dev>
…xtual widget instantiation
Co-authored-by: openhands <openhands@all-hands.dev>
pg-dev-gitand others added 21 commits August 29, 2026 13:16
Co-authored-by: openhands <openhands@all-hands.dev>
… NoneType renderable error
Co-authored-by: openhands <openhands@all-hands.dev>
…dget
Co-authored-by: openhands <openhands@all-hands.dev>
… permanently enforce connection safety
Co-authored-by: openhands <openhands@all-hands.dev>
…dless and container environments without system keyring backend
Co-authored-by: openhands <openhands@all-hands.dev>
…e) for headless VMs and browser-less environments
Co-authored-by: openhands <openhands@all-hands.dev>
- Fix undefined CSS variables in dark.css and light.css:
- Add -darken-2, -darken-2, -darken-2
- Fix Footer background to use -darken-2 instead of undefined -dark
- Add signal handling in app.py for graceful shutdown:
- Register SIGINT/SIGTERM handlers in on_mount()
- Call self.exit() directly in signal handler (not call_from_thread)
- Add _shutdown_event for coordination
- Clean up in on_unmount()
1. Prevent auto-login on startup:
- session.initialize() now calls ensure_valid_token(auto_refresh=False)
- Added auto_refresh parameter to ensure_valid_token()
2. Fix login screen dismissal after login:
- Removed @work decorator from _run_login and _run_device_login
- These methods now properly await the login flow before dismissing the screen
- Added layout parameter to refresh() method to match Textual's Widget.refresh() signature
- This prevents TypeError when Textual internally calls refresh(layout=True) during mount
…bridge
Co-authored-by: openhands <openhands@all-hands.dev>
- Fix F1 help binding error by adding action_help
- Implement fuzzy-search command palette on Ctrl+P
- Implement column-width save/restore persistence via WindowManager
- Implement configuration settings view in MainScreen
- Load TUI config, apply themes, and integrate app state on startup
Co-authored-by: openhands <openhands@all-hands.dev>
… kwarg
Co-authored-by: openhands <openhands@all-hands.dev>
…n sync
Co-authored-by: openhands <openhands@all-hands.dev>
…ipe in refresh_org_list
Co-authored-by: openhands <openhands@all-hands.dev>
…secure env-based session seeding scripts
Co-authored-by: openhands <openhands@all-hands.dev>
… token expiration protocol
Co-authored-by: openhands <openhands@all-hands.dev>
…tderr, with TUI error interception and model validation resilience
Co-authored-by: openhands <openhands@all-hands.dev>
…ntax, and support sync progress callbacks in dataset extraction
Co-authored-by: openhands <openhands@all-hands.dev>
…refresh to prevent TUI blocking
Co-authored-by: openhands <openhands@all-hands.dev>
Disable stderr log streaming during TUI execution to prevent background logs from polluting stderr and corrupting the terminal display buffer (single column wrapping issue).
Co-authored-by: openhands <openhands@all-hands.dev>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pg-dev-git@openhands-agent