* fix(skills): hot-persist skills_disabled without agent rebuild (#47)
Avoid scheduling a full harness reload when enabling/disabling skills or
finishing SkillHub install, which raced list fetches with AGENT_NOT_FOUND.
Also move the experts template "installed" badge to the card footer.
Co-authored-by: jubaoliang <jubaoliang@tencent.com>
* fix(skills): fetch SkillHub rankings over HTTP
* fix(skills): preserve SkillHub display metadata
* feat(skills): use HTTP for SkillHub search and install
* refactor(skills): support source-neutral packages
---------
Co-authored-by: jubaoliang <jubaoliang@gmail.com>
Co-authored-by: jubaoliang <jubaoliang@tencent.com>
Co-authored-by: leoxyang <leoxyang@tencent.com>
* feat: workspace file preview, browser workspace, and tooling updates
Consolidate the in-progress workspace changes:
- In-browser preview for PDF/Word/Excel documents (DocumentPreview)
- Harness /workspace/ path normalization for chat file downloads
- Browser workspace UI and remote browser panels
- Docker packaging and CI publish workflow updates
- Dependency bumps (pyproject/uv.lock, dashboard package deps)
* feat(chat): docked file preview, HTML preview, and history pull-refresh
Polish workspace/chat file viewing with dock modes and shared resize,
sandboxed HTML preview, overscroll history refresh for incomplete WS
replies, and a compact input when the chat panel is narrow.
Co-authored-by: Cursor <cursoragent@cursor.com>
* refactor: delegate context usage to harness-agent 0.9.10
Bump orcakit-harness-agent and replace local token estimation with
HarnessAgent.aget_context_usage snapshots, keeping a stream-token
fallback for older wheels. Refresh the dashboard ring for the new
segment shape.
Co-authored-by: Cursor <cursoragent@cursor.com>
* refactor: pass BackendWorkspace paths through without rewriting
Replace extract/normalize helpers with backend_workspace_path so absolute
and relative sources stay as-is. Unify workspace download/read/write on
_workspace_io_path and update dashboard media URL helpers to match.
Co-authored-by: Cursor <cursoragent@cursor.com>
* refactor(chat): unify browser and file panels into ChatDock
Replace separate FilePanel/ChatBrowserPanels/modal paths with a shared
ChatDock shell and useChatDockPanel state. Extract pointer-drag resize,
polish workspace file/media preview, and slim BrowserViewer for the
docked layout.
Co-authored-by: Cursor <cursoragent@cursor.com>
* chore: release 0.9.10
* fix: CI warnings/failures for skillhub subprocess and Windows media preview
Kill and drain timed-out skillhub CLI children so asyncio transports close
on a live loop, and restore workspace-relative plus host-file fallbacks so
Windows drive-letter paths still resolve for media preview/import.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(test): use platform default backend for virtual_mode media import
Hard-coding root_dir='/' breaks Windows CI: virtual-mode uploads resolve
outside the process drive root. Match default_agent_backend_spec instead.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: jubaoliang <jubaoliang@tencent.com>
Co-authored-by: Cursor <cursoragent@cursor.com>