Commit Graph

811 Commits

Author SHA1 Message Date
Benjamin Shafii
a222c2b664 chore(release): bump to 0.11.37 and unify service versions v0.11.37 va222c2b-dev 2026-02-09 00:00:34 -08:00
Benjamin Shafii
a9988bfcea fix(desktop): stop sidecars on app exit va9988bf-dev 2026-02-08 23:51:29 -08:00
Benjamin Shafii
20b1f0f356 fix(desktop): make tauri dev startup more reliable
Reuse an existing Vite dev server instead of failing on busy ports, avoid Node 25 top-level await exit, and ensure opencode sidecar tracks latest when unpinned.
2026-02-08 23:30:55 -08:00
Benjamin Shafii
5de641479a tet 2026-02-08 23:18:54 -08:00
Benjamin Shafii
7864dfda71 feat(workers): create worker by starting detached openwrk v7864dfd-dev 2026-02-08 23:11:13 -08:00
OpenWork Release Bot
9d98723668 chore(aur): update PKGBUILD for 0.11.36 2026-02-09 06:12:39 +00:00
Benjamin Shafii
2002bd2744 feat(deploy): add stateless export/import wizard v2002bd2-dev 2026-02-08 22:02:03 -08:00
Benjamin Shafii
749cf9b158 chore: bump version to 0.11.36 v0.11.36 v749cf9b-dev openwrk-v0.11.36 2026-02-08 21:48:30 -08:00
Benjamin Shafii
3a88b1e0a9 fix(openwrk): make owpenbot health wiring reliable v3a88b1e-dev 2026-02-08 20:48:54 -08:00
Benjamin Shafii
1660c0782d chore(server): move audit log to host data dir v1660c07-dev 2026-02-08 20:44:09 -08:00
Benjamin Shafii
47c3c49bea feat(identities): show bot info, disconnect, and isolate owpenbot v47c3c49-dev 2026-02-08 20:03:45 -08:00
OpenWork Release Bot
7e86910e8b chore(aur): update PKGBUILD for 0.11.35 2026-02-09 03:48:46 +00:00
Benjamin Shafii
88eb6b9c43 chore: bump version to 0.11.35 v0.11.35 v88eb6b9-dev openwrk-v0.11.35 2026-02-08 19:24:39 -08:00
Benjamin Shafii
92e1486894 feat(server): watch workspace files for reload events v92e1486-dev 2026-02-08 15:53:03 -08:00
Benjamin Shafii
907505d408 fix(app): restore Plugins nav in session view v907505d-dev 2026-02-08 15:35:30 -08:00
ben
589c308bba fix(server): secure opencode proxy + add skill delete (#505)
* fix(server): harden opencode proxy auth

* feat(server): add skill delete endpoint

* fix(ci): reuse resolved OPENCODE_VERSION for desktop build

* fix(desktop): skip opencode version lookup when sidecar exists

* fix(desktop): avoid TDZ when reusing opencode sidecar

* chore(desktop): update Cargo.lock
v589c308-dev
2026-02-08 15:08:08 -08:00
ben
366bc36d55 feat(agent-lab): multi-instance host + Agent Lab Toy UI (#504)
* feat(agent-lab): add instance manager CLI

* fix(server): block opencode permission replies for non-owners

* feat(toy-ui): add share + checkpoints

* feat(agent-lab): add entrypoints and scheduler sync

* feat(server): add agentlab automations and skill delete

* feat(toy-ui): add agent lab panels
v366bc36-dev
2026-02-08 13:58:50 -08:00
GitHub Action
2bb757420d ignore: update download stats 2026-02-08 2026-02-08 12:15:48 +00:00
OpenWork Release Bot
c1f4f19c8c chore(aur): update PKGBUILD for 0.11.34 2026-02-08 02:56:08 +00:00
OpenWork Release Bot
f351a2d641 chore(aur): update PKGBUILD for 0.11.33 2026-02-08 02:42:35 +00:00
Benjamin Shafii
4b0f8195ca chore: bump version to 0.11.34 openwrk-v0.11.34 v4b0f819-dev v0.11.34 2026-02-07 18:31:25 -08:00
Benjamin Shafii
c59ca5080d fix(app): stop sidebar refresh loop when baseUrl missing vc59ca50-dev 2026-02-07 18:28:39 -08:00
OpenWork Release Bot
2ab3115366 chore(aur): update PKGBUILD for 0.11.32 2026-02-08 02:26:17 +00:00
Benjamin Shafii
186cd8bb47 chore: bump version to 0.11.33 v0.11.33 v186cd8b-dev openwrk-v0.11.33 2026-02-07 18:18:38 -08:00
Benjamin Shafii
a9ece9860b Revert "fix(app): fix memory leaks, environment compatibility, and error recovery (#493)"
This reverts commit 7989e1a064.
va9ece98-dev
2026-02-07 18:17:25 -08:00
Benjamin Shafii
504cad09c3 fix(desktop): persist openwrk opencode auth
Write opencode basic-auth credentials to the openwrk data dir so the UI can reconnect after app relaunches when openwrk is still running.
2026-02-07 18:13:46 -08:00
Benjamin Shafii
39effc3d7f chore: bump version to 0.11.32 v39effc3-dev v0.11.32 openwrk-v0.11.32 2026-02-07 18:02:00 -08:00
ben
b15e1f3550 revert: remove deploy ssh + owpenbot operator TUI (#502)
* Revert "feat(owpenbot): add operator TUI (#501)"

This reverts commit a48578d331.

* Revert "feat(openwrk): add deploy ssh adapter (#500)"

This reverts commit 4ee56922a1.

* fix(owpenbot): guard health timer cleanup

Keep owpenbot TypeScript builds green after reverting the operator TUI by avoiding clearInterval(null).
vb15e1f3-dev
2026-02-07 17:51:30 -08:00
ben
a48578d331 feat(owpenbot): add operator TUI (#501)
* fix(owpenbot): guard health timer cleanup

Avoid calling clearInterval with a null timer so TypeScript builds stay green.

* feat(owpenbot): add operator TUI

Add a TTY-first interactive menu that talks to the owpenbot health API (direct or via openwork-server proxy) for QR, token, groups, and bindings management.

* chore(desktop): refresh Cargo.lock

Update the lockfile to match the current desktop crate version so Linux CI can run with --locked.

* fix(owpenbot): require client token for proxy TUI

When using openwork-server proxy mode, include a Bearer client token for /owpenbot/health while still supporting host-token for admin endpoints.
va48578d-dev
2026-02-07 17:19:07 -08:00
ben
4ee56922a1 feat(openwrk): add deploy ssh adapter (#500)
* feat(openwrk): add deploy ssh adapter

Add an SSH deploy command that bootstraps openwrk on a remote Linux host via the npm tarball, optionally syncs workspace config, and starts the host under nohup with a connect artifact for pairing.

* chore(desktop): refresh Cargo.lock

Update the lockfile to match the current desktop crate version so Linux CI can run with --locked.
v4ee5692-dev
2026-02-07 17:09:43 -08:00
Benjamin Shafii
4aff31862c chore(desktop): sync Cargo.lock version
Keep the Tauri desktop lockfile consistent with the current OpenWork version.
v4aff318-dev
2026-02-07 16:20:16 -08:00
Benjamin Shafii
da5e267133 chore(desktop): isolate dev app state
Run tauri dev with a separate bundle identifier and OPENWRK_DATA_DIR so dev and production can run side-by-side without clobbering app data or openwrk state.
2026-02-07 16:20:09 -08:00
Benjamin Shafii
a9bf20d4e1 chore(debug): tie workspace switch logs to developer mode
Use the existing Developer Mode toggle to enable WSDBG tracing instead of a separate localStorage flag.
va9bf20d-dev
2026-02-07 15:57:59 -08:00
Benjamin Shafii
353a4e2e15 chore(debug): add workspace switch tracing
Gate verbose logs behind openwork.debug.workspaceSwitch to capture timing, session list counts, and sidebar refresh behavior during remote->local switches.
v353a4e2-dev
2026-02-07 15:55:29 -08:00
Benjamin Shafii
0aaa9c19dc fix(app): reduce sidebar session refresh thrash
Limit sidebar session list payload and avoid refreshing remote workspaces when only local engine auth/baseUrl changes (common on remote->local switches).
v0aaa9c1-dev
2026-02-07 15:50:28 -08:00
ben
f9a2809f96 feat: proxy owpenbot via openwork-server (#499)
* feat: proxy owpenbot via openwork-server

Unify client surface by routing owpenbot through /owpenbot/* (+ /w/:id/owpenbot/*), and move QR/token flows off interactive CLI calls. Sandbox mode keeps owpenbot internal (no extra published port) while preserving health + config via the edge.

* chore(desktop): refresh Cargo.lock

Update the Tauri crate lockfile so linux CI can run with --locked.
vf9a2809-dev
2026-02-07 15:44:12 -08:00
Benjamin Shafii
be366f4a45 fix(app): scope session listing to workspace
Avoid fetching the global session list on workspace switches by passing directory/roots to session.list; reduces UI hangs and memory churn.
vbe366f4-dev
2026-02-07 15:43:29 -08:00
OpenWork Release Bot
f7f0abaa4d chore(aur): update PKGBUILD for 0.11.31 v7989e1a-dev 2026-02-07 23:19:16 +00:00
IanShaw
7989e1a064 fix(app): fix memory leaks, environment compatibility, and error recovery (#493)
* fix(app): 修复内存泄漏、环境兼容性和错误恢复

- 新增 session 缓存清理机制,防止长时间运行内存无限增长
  - pruneSessionCaches: 按有效 session 列表裁剪缓存
  - removeSessionCaches: 删除单个 session 时精确清理关联数据
  - clearSessionCaches: workspace 切换/断连时全量清空
  - reloadDetectionSet 设置 5000 上限防止膨胀
- AbortSignal.timeout polyfill 兼容旧版 WebView/Electron
  - 健康检查完成后清理定时器避免泄漏
- MediaQueryList 旧版 API 降级兼容 (addListener/removeListener)
- 顶层 ErrorBoundary 防止未捕获渲染错误导致白屏

* fix(app): simplify reload detection and harden external links

---------

Co-authored-by: Benjamin Shafii <ben@prologe.io>
2026-02-07 15:15:37 -08:00
ben
b53d791bea feat(app): redesign tool call steps UI for cleaner, more compact display (#498)
- Replace flat step list with compact single-line rows featuring status dots,
  tool-type-specific icons (read/edit/search/terminal/etc), and truncated details
- Add classifyTool() for semantic tool categorization and icon mapping
- Improve summarizeStep() to extract filenames, commands, and patterns
  instead of dumping raw output with line numbers
- Replace bordered card container with clean left-border-line expand panel
- Show step count badge in collapsed state ('N steps')
- Add running state indicator with pulse animation
- Use ChevronRight rotate animation instead of ChevronDown for expand/collapse
- Extract StepsContainer as reusable component for both cluster and inline steps
- Filter out raw file content markers (<file> 00001|) from detail text
- Parse 'Success. Updated...' messages to show just the filename
vb53d791-dev
2026-02-07 14:56:36 -08:00
Benjamin Shafii
744d1277e8 chore: bump version to 0.11.31 v0.11.31 v744d127-dev openwrk-v0.11.31 2026-02-07 14:55:01 -08:00
ben
10213763a1 fix(app): restore Plugins tab in dashboard sidebar (#497)
The Plugins nav item was dropped during the DLS alignment refactor (bd6062c).
The PluginsView component and tab routing were still wired correctly --
only the sidebar and mobile bottom-nav buttons were missing.

- Add Plugins button to right sidebar (between Skills and Apps)
- Add Plugins button to mobile bottom nav (5-col grid)
- Import Cpu icon from lucide-solid (same icon used before removal)
v1021376-dev
2026-02-07 14:11:41 -08:00
OpenWork Release Bot
4215d96b49 chore(aur): update PKGBUILD for 0.11.30 2026-02-07 21:35:27 +00:00
Benjamin Shafii
c9e6aee058 chore: bump version to 0.11.30 openwrk-v0.11.30 v0.11.30 vc9e6aee-dev 2026-02-07 13:10:49 -08:00
TY
8e42fc549b fix: allow data:image/* URLs in markdown renderer (#491)
The isSafeUrl function was blocking all data: URLs including
data:image/jpeg;base64,... returned by AI image generation models.
This caused markdown images like ![image](data:image/jpeg;base64,...)
to render with empty src, showing only the alt text 'Image'.

Now data:image/* URIs are whitelisted while other data: schemes
(e.g. data:text/html) remain blocked to prevent XSS.

Co-authored-by: taoyuan <taoyuan@gmail.com>
v8e42fc5-dev
2026-02-07 13:06:06 -08:00
TY
6120ad5b56 fix: prevent Enter key during IME composition from triggering actions (#492)
When using an IME (e.g. Chinese, Japanese, Korean input methods), pressing
Enter to confirm character conversion was incorrectly triggering form
submissions, message sends, and other actions.

Changes across 10 files:

- composer.tsx: triple-check IME state (event.isComposing + manual
  compositionstart/end flag + keyCode === 229) with addEventListener
  binding to work around SolidJS event delegation limitations
- model-picker-modal.tsx: guard Enter for model selection
- question-modal.tsx: guard Enter for option/custom input (2 handlers)
- rename-session-modal.tsx: guard Enter for session rename
- rename-workspace-modal.tsx: guard Enter for workspace rename
- dashboard.tsx: guard Enter for workspace/session list items (3 handlers)
- session.tsx: guard Enter for workspace/session list items (3 handlers)
- proto-v1-ux.tsx: guard Enter for expandable section toggle
- skills.tsx: guard Enter for skill card activation
- onboarding.tsx: guard Enter for directory path input

Co-authored-by: taoyuan <taoyuan@gmail.com>
v6120ad5-dev
2026-02-07 13:03:03 -08:00
ben
f3da381606 feat: minimal container sandbox + server tokens + toy UI (#494)
* feat(server): add scoped tokens, inbox/outbox, toy UI, and auth hardening

- TokenService with file-based persistence (tokens.json)
- /tokens CRUD (host auth), /whoami (client auth)
- Bearer token auth accepting OPENWORK_TOKEN or scoped tokens
- POST /workspace/:id/inbox (multipart upload)
- GET /workspace/:id/artifacts, /workspace/:id/artifacts/:id
- Toy UI at /ui with SSE, prompt send, inbox upload, outbox download
- Extended GET /capabilities with schemaVersion, serverVersion, approvals info
- Updated README with all new endpoints and auth model

* feat(headless): add sandbox runtime with Docker and Apple container backends

- --sandbox none|auto|docker|container CLI flag
- --sandbox-image, --sandbox-persist-dir, --sandbox-mount options
- Mount security: allowlist, blocked patterns, symlink resolution
- Docker backend: workspace/persist volumes, sidecar staging, entrypoint
- Apple container backend: --mount type=bind for ro mounts
- Sandbox mode proxies all OpenCode access through openwork-server
- Proxy health check (waitForHealthyViaProxy) avoids SDK auth issues
- Sandbox-specific check suite (runSandboxChecks) for --check mode
- Non-fatal verifyOpenworkServer in sandbox mode for version mismatches
- Updated README with sandbox docs and mount security

* feat(packaging): add Docker/docker-compose PaaS packaging

- Dockerfile (node:22-bookworm-slim, installs openwrk via npm)
- docker-compose.yml with workspace and data volumes
- README with usage instructions

* fix(headless): define sandbox owpenbot internal health port
vf3da381-dev
2026-02-07 13:01:15 -08:00
ben
cba77fa04f fix(owpenbot): lazy WhatsApp onboarding and REST pairing (#496)
- Default WhatsApp to disabled unless creds/config enable it\n- Never print QR codes from bridge startup (printQr=false)\n- Lazy-load WhatsApp adapter to avoid Bun ws warnings when disabled\n- Add REST endpoints: GET /whatsapp/qr, GET/POST /config/whatsapp-enabled\n- Only print CLI command hints in interactive TTY mode
vcba77fa-dev
2026-02-07 13:01:06 -08:00
ben
541d7ff392 fix(headless): pick random owpenbot health port by default (#495)
Avoid hard-coding 3005 so owpenbot health checks don't fail when the default port is already in use. Still supports explicit --owpenbot-health-port / OWPENBOT_HEALTH_PORT overrides.
v541d7ff-dev
2026-02-07 11:21:09 -08:00
GitHub Action
8797a6e2f2 ignore: update download stats 2026-02-07 2026-02-07 12:14:58 +00:00