* refactor: update Dockerfile and installation scripts to make Playwright Chromium optional
- Removed pre-installation of Playwright Chromium in Dockerfile and installation scripts.
- Updated documentation to clarify that Playwright Chromium is not downloaded by default; users can opt-in using the `--extras browser` flag.
- Adjusted README and script comments to reflect changes in installation behavior regarding Chromium.
- Ensured that existing system Chrome/Chromium installations are reused when available.
* refactor(browser): update browser environment interface and add Chrome installation check
- Modified the BrowserEnvStatus interface to include new properties for Playwright and Chrome detection.
- Enhanced the Chat component to check for Chrome installation and prompt users to install if missing.
- Added utility functions to determine if a redirect to the Chrome installation page is necessary.
- Updated localization files to include messages related to Chrome installation prompts in English and Chinese.
- Introduced tests for the new Chrome installation logic to ensure correct behavior.
* fix(browser): update Chrome installation prompt and navigation logic
- Modified the message displayed when Chrome is not installed to provide clearer instructions.
- Replaced the info message with a confirmation modal that prompts users to navigate to the Chrome installation page.
- Updated dependencies in the Chat component to include the new modal functionality and ensure mobile responsiveness.
* fix(localization): update Chrome installation prompts in English and Chinese
- Changed the message for missing browser detection to provide clearer instructions.
- Updated the Chat component to reflect the new localization keys for the Chrome installation prompt.
- Ensured consistency in messaging across different languages for better user experience.
* fix(localization): improve browser installation prompts in English and Chinese
- Updated messages for browser detection and installation to provide clearer instructions for users.
- Ensured consistency in localization across both English and Chinese versions for better user experience.
- Enhanced user guidance for installing a browser to facilitate remote browsing and automated actions.
* fix(localization): update browser status messages in English and Chinese
- Revised messages related to browser readiness and uninstallation for clarity and consistency.
- Enhanced user guidance in both languages to improve the overall experience when managing the built-in browser.
- Ensured that the localization updates reflect the intended functionality and user interactions.
* fix(localization): update shutdown messages in English and Chinese
- Revised shutdown confirmation messages for clarity and consistency across both languages.
- Enhanced user understanding of the browser shutdown process and its implications.
- Ensured localization updates align with the intended user experience when managing the browser.
* chore(dependencies): update harness-browser to version 0.7.8
- Bumped harness-browser dependency from 0.7.7 to 0.7.8 in pyproject.toml and uv.lock.
- Updated associated package metadata to reflect the new version and its dependencies.
* feat(mobile): add Remote Android probe, API, stream, and dashboard
Multi-backend mobile support for self-hosted Octop: install-time host
capability probe, gated /api/mobile routes, adb WebSocket stream, and
Control → Remote Android dashboard page for Mac/emulator dev paths.
* feat(mobile): wire harness agent adb tools for Remote Android
Register mobile_screenshot, mobile_tap, mobile_swipe, mobile_launch_app,
mobile_ui_dump, and mobile_handoff_to_user when capabilities.mobile is
enabled, with permission and readiness checks.
* feat(mobile): polish Remote Phone UX and session-bound agent control
Rename the surface to Remote Phone, add quality presets, device info, AI
panel, and chat-dock phone tab; bind agent tools to the active stream
session and cover with unit tests.
* chore(mobile): drop docs/specs/remote-android.md from the PR
* fix(mobile): ruff I001 import formatting in device_info tests
* fix(mobile): resolve adb via PATH and SDK env only
Drop hardcoded per-OS SDK layout guesses; honor PATH, ANDROID_HOME,
and ANDROID_SDK_ROOT (with adb.exe on Windows).
* style(mobile): apply ruff format to mobile modules
CI runs ruff format --check; keep these files format-clean.
---------
Co-authored-by: jubaoliang <jubaoliang@gmail.com>
* feat: workspace backend sandboxing, execute-env injection, and ephemeral image refs
Workspace file-I/O hardening across backend and dashboard:
- Host directory sandboxing via root_dir allow-list and denied prefixes
- Execute-environment defaults injected into harness backend specs
- Ephemeral workspace image rematerialization for model calls
- Attachment hint expansion and inbound store improvements
- Portable memory backend and skill workspace catalog updates
- Dashboard UI for agent backend fields and root-dir selection
- Bump harness-agent 0.9.23 / harness-memory 0.9.7; docs + install notes
* feat: add user invitation codes with admin management and redeem flow
- Add user_invites table (migration 009) plus SQLite/Postgres reconcile paths
- Add InviteRepo and InviteService for create/revoke/list/redeem
- Expose public validate/redeem endpoints and admin create/revoke/list routers
- Extract default-agent bootstrap into octop.infra.agents.default_agent
- Add invite error codes and en/zh i18n strings
- Dashboard: invite drawer, login redeem UI, users list, and locales
* fix: add Windows cross-platform guards for pre-existing sandbox/rootfs tests
- Guard POSIX/container-only tests (rootfs-absolute /.octop/... workspace
paths) with posix_only in test_thread_artifacts.py and test_agent_manager.py
- Normalize the rendered workspace path assertion in test_octop_builtin_skills.py
(forward slashes on Windows, not str(tmp_path) backslashes)
- Canonicalize ws_dir before the prefix check in attachment hint/path tests
(tempfile may yield an 8.3 short path on Windows while the resolved
attachment path uses the long form)
These failures predate the user-invites commit and are unrelated to it; the
product path logic is correct.
---------
Co-authored-by: jubaoliang <jubaoliang@tencent.com>
Unify file list / file viewer / browser into closable dock tabs with a
PR-style path tree and path dedupe; polish account popover and rail UX;
harden install mirrors and bump harness-agent.
Co-authored-by: Cursor <cursoragent@cursor.com>
Update the "faster downloads" mirror examples in docker docs and
install scripts to use Tencent Cloud's PyPI/APT/NPM mirrors
(mirrors.cloud.tencent.com), so the documented defaults match what
scripts/install.sh and self_update.py already try first at runtime.
Affected: docker/Dockerfile, docker/docker_build.sh,
docker/README.md, docker/README_CN.md, scripts/README.md,
scripts/install.sh (--help).
Add missing POST /api/search/{id}/test so Advanced Search key checks work,
fix Ant Design pageSize changers stuck at 10, clarify the new-chat icon,
slide-renew JWT for active sessions, tighten chat polish prompts, and harden
install.sh for python-dev / Playwright mirrors.
Co-authored-by: jubaoliang <jubaoliang@tencent.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(connectors): add gateway connectors and drop baidu-netdisk/figma
Expand the catalog with QQ Music, Fliggy, Baidu Map, Ctrip Wendao, Meituan Travel, and Yuandian; migrate Tencent News to API key; unify gateway credential probes; remove Baidu Netdisk/Figma OAuth paths.
Co-authored-by: Cursor <cursoragent@cursor.com>
* chore(install): ship Playwright by default and harden install scripts
Make browser tooling a core dependency, drop obsolete optional extras, and improve glibc/Playwright system-deps handling across install.sh/ps1/bat.
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(desktop): install build deps before Python packages on Linux
Add a build-deps-only path so remote desktop setup can compile extension wheels when system headers are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(dashboard): cache update-status checks in localStorage
Deduplicate concurrent PyPI probes across mounts and persist the last known update status with a short TTL.
Co-authored-by: Cursor <cursoragent@cursor.com>
* test(live): add OSS probes, secret helpers, and CI live job
Centralize require_env skipping, document live credentials in .env.example, and wire a secrets-gated live-tests workflow.
Co-authored-by: Cursor <cursoragent@cursor.com>
* chore(tests): rename chat WS integration test and drop dead cases
Align the chat transport test name with WebSocket usage and remove a skipped bootstrap harness test.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(ci): unblock typecheck, CodeQL, and drifted live tests
Align mypy with requires-python 3.12 so numpy stubs parse; clarify Fliggy
SHA-256 use for request signing; update live expert/backend assertions
to the lazy Expert catalog and DEFAULT_BACKEND_SPEC with root_dir.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(ci): news Skill-Request-Id, workspace live reads, CodeQL FP
Add Tencent News CLI headers required by error 4010; assert expert
seeds via agent.workspace instead of host-rooted backend paths; ignore
Fliggy signing digests in CodeQL (protocol SHA-256, not password KDF).
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(tests): allow newline-only __init__.py in expert live checks
Office-automation skill packages ship empty package markers; strip()-based
emptiness assertions should not treat those as copy failures.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(tests): compare expert seeds via adownload_bytes
Harness aread_text replaces empty/whitespace file bodies with a system
reminder, which broke live office-automation __init__.py checks.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: jubaoliang <jubaoliang@tencent.com>
Co-authored-by: Cursor <cursoragent@cursor.com>