87 Commits

Author SHA1 Message Date
kumarabhirup
477daad4ff
feat(gateway): migrate chat transport to WebSocket and enforce single ironclaw profile
This commit introduces a new plan to transition the chat transport from CLI processes to Gateway WebSocket, while maintaining the existing SSE API contract. It locks the web to a single `ironclaw` profile, disables workspace/profile switching, and updates relevant tests. Key changes include the implementation of a WebSocket-backed adapter, API lockdown with 403 responses for profile mutations, and UI adjustments to remove profile switching controls.
2026-03-03 15:39:27 -08:00
kumarabhirup
70ca59a66d
refactor(web): show IDENTITY.md in workspace, filter managed skills, hide bootstrap toggle
IDENTITY.md is now user-editable (no longer a system file). Managed skill filter updated from dench to crm/browser. Bootstrap seed toggle hidden from create-workspace dialog.
2026-03-03 15:38:41 -08:00
kumarabhirup
f6eee0b398
refactor(cli): update workspace-seed with dynamic identity and dench skill
Build identity template with workspace path; add seedDenchSkill for skills/dench.
2026-03-03 13:47:38 -08:00
kumarabhirup
1adb7b926b
refactor(web): update workspace components for workspace model
ProfileSwitcher uses workspaces; create-workspace-dialog, empty-state, sidebar updated.
2026-03-03 13:46:54 -08:00
kumarabhirup
693811ccb2
test(web): add profile-switcher, object-filter-bar, stream-parser, and subagent-panel message tests 2026-03-02 18:36:19 -08:00
kumarabhirup
3ed8872f16
refactor(web): move profile management to workspace-sidebar 2026-03-02 18:35:34 -08:00
kumarabhirup
e7bdd45be1
feat(web): add IDENTITY.md to system file patterns in file-manager-tree 2026-03-02 18:35:27 -08:00
kumarabhirup
440e7063e2
refactor(web): simplify empty-state to remove inline workspace creation 2026-03-02 18:35:20 -08:00
kumarabhirup
f0135da82e
feat(web): add copyConfigAuth option to create-workspace-dialog 2026-03-02 18:35:13 -08:00
kumarabhirup
9542c60f66
feat(web): add workspace delete and profile discovery to profile-switcher 2026-03-02 18:35:03 -08:00
kumarabhirup
af0d34b5db
feat(web): add message queue UI with edit/send/remove to subagent-panel 2026-03-02 18:34:56 -08:00
kumarabhirup
e3fb54880a
feat(web): add subagent status labels to chat-message component 2026-03-02 18:34:49 -08:00
kumarabhirup
20ace16d4c
fix(web): prevent subagent sessions from leaking into chat sidebar
- Skip updateIndex for session IDs containing :subagent: so they don't
  appear as top-level "New Chat" entries in the sidebar
- Filter subagent IDs in the sidebar component as a safety net
- Clean up existing leaked entries from index.json

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-22 01:11:26 -08:00
kumarabhirup
6594de6186
Merge Ironclaw changes onto upstream Openclaw 2026.2.22
Replays all Ironclaw-specific changes (176 commits) onto the latest
upstream Openclaw release (2026.2.22). Conflicts auto-resolved in
favor of Ironclaw to guarantee zero change loss.

Merge base: cbc3de6c9 (2026-02-16)
Upstream: a37e12eab (upstream/main, 2026.2.22)
Ironclaw: 3009566c9 (origin/main, 2026.2.15-1.9)
Backup: ironclaw-backup-pre-sync

Conflict resolutions:
- 6 GitHub workflow files: deleted (Ironclaw intentionally stripped)
- src/sessions/session-key-utils.test.ts: kept (Ironclaw modified)
- Duplicate imports from merge: deduplicated
- Unused imports from upstream code Ironclaw overrode: removed
- Broken test indentation from merge: fixed

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 18:06:01 -08:00
kumarabhirup
d88ed44521
Merge remote-tracking branch 'origin/main' into kumareth/workspaces
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	apps/web/app/components/chat-message.tsx
2026-02-21 15:00:45 -08:00
kumarabhirup
c8ae7acbf4
fix: restore remaining merge regressions (SKILL.md, MIME types, showHidden, symlink, activeProfileHint) 2026-02-21 14:39:55 -08:00
kumarabhirup
92fadd6700
fix: filter non-parent events in main NDJSON handler and fix workspace creation path
Bug 1: Subagent events from gateway broadcasts were processed as parent
events because the sessionKey filter was accidentally removed during the
subagent decoupling refactor. Re-add the filter in wireChildProcess.

Bug 2: Creating workspaces at custom paths failed because:
- mkdir API rejected absolute paths outside workspace root
- Directory picker started at workspace root, not home
- Error responses from mkdir were silently swallowed
Add absolute path support to mkdir, handle errors in picker UI,
start picker at home dir, and normalize init route paths.
2026-02-21 13:45:11 -08:00
kumarabhirup
109b88b93c
web: restore functional features dropped by design merge
Restore backend/logic features that were incorrectly auto-merged from the
design branch:

- Spreadsheet viewer (xlsx, csv, ods, etc.) and xlsx dependency
- HTML iframe viewer with source toggle
- Directory picker modal for workspace creation
- Workspace registry for custom-path workspaces
- Session auto-discovery for orphaned sessions
- Workspace init seeding (CRM objects, DuckDB, templates, bootstrap files)
- Symlink resolution and showHidden in tree/browse routes
- Upload to workspace assets/ instead of hidden ~/.ironclaw/uploads/
- Webpack dev watcher config (next.config.ts)
- router.push for back-button navigation history
2026-02-21 13:10:32 -08:00
kumarabhirup
db4c90b37d
Merge remote-tracking branch 'origin/markrachapoom/design' into kumareth/workspaces
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	apps/web/app/api/chat/subagent-stream/route.ts
#	apps/web/app/api/workspace/watch/route.ts
#	apps/web/app/components/chat-panel.tsx
#	apps/web/app/components/subagent-panel.tsx
#	apps/web/lib/subagent-runs.ts
#	apps/web/tsconfig.tsbuildinfo
2026-02-21 12:40:07 -08:00
kumarabhirup
536ae59667
web: add interactive messaging UI to subagent panel
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 12:32:59 -08:00
kumarabhirup
e267fe7df4
web: export stream parser and add user-message event type 2026-02-21 12:32:27 -08:00
kumarabhirup
f3ae8127da
web: filter leaked NO_REPLY tokens in chat message display 2026-02-21 12:32:10 -08:00
kumarabhirup
119dcdc775
web: show 'Waiting for subagents...' status in chat panel 2026-02-21 11:04:37 -08:00
Mark
ca8ac9fda1 Revert "Merge kumar workspaces to design branch"
This reverts commit bf4445115b911fa7831e6a35f7d0114154bb58ec, reversing
changes made to face53f2341417e339c02d5d7d4c412b961f87f6.
2026-02-20 12:45:42 -08:00
Mark
bf4445115b Merge kumar workspaces to design branch 2026-02-20 12:04:56 -08:00
kumarabhirup
88d10ab800
web: add spreadsheet viewer with xlsx parsing support 2026-02-20 00:42:58 -08:00
kumarabhirup
436a07c3c8
web: add HTML viewer with rendered preview and code modes 2026-02-20 00:42:49 -08:00
kumarabhirup
8a0520d7bd
web: add symlink support and hidden-files toggle across workspace 2026-02-20 00:42:38 -08:00
Mark
face53f234 Attachment previews in chat panel, input, and queue. 2026-02-20 00:02:18 -08:00
Mark
6c6289eb2e Collapsible sidebar 2026-02-19 23:15:39 -08:00
Mark
5da7d46a49 Rename chat title 2026-02-19 22:54:23 -08:00
Mark
f960ed3030 Fix file link and add lookLikeFileLink detector and click to preview 2026-02-19 22:50:34 -08:00
Mark
fcbec6c4d6 Queue items (edit, send now, delete) 2026-02-19 21:58:10 -08:00
kumarabhirup
09f2d82c50
fix: ProfileSwitcher re-fetches profiles after workspace creation so new workspace shows as active 2026-02-19 21:56:37 -08:00
kumarabhirup
d43d226ee8
workspace: seed all bootstrap files + DuckDB on create, add directory picker 2026-02-19 21:38:36 -08:00
Mark
a0ba55feec Integrate file preview on the side 2026-02-19 17:46:54 -08:00
Mark
4f80c60f88 Unicode + Session delete (API + sidebar + chat header), sidebar loading state and layout, inline “thinking” spinner, chat sidebar CSS variables, and font/heading tweaks in the web app. 2026-02-19 16:50:52 -08:00
Mark
027593b350 Resizable sidebar 2026-02-19 15:42:23 -08:00
Mark
68f09660e9 Fix: thinking UI just messed up with scroll and make the whole chat panel moved. 2026-02-19 15:23:27 -08:00
kumarabhirup
21f60da24d
🚀 RELEASE: Workspaces 2026-02-19 14:59:34 -08:00
Kumar Abhirup
bc4b1fd0f2
Merge pull request #3 from ysfbsf/fix/webchat-markdown-images
fix: proxy local file paths in webchat markdown images
2026-02-18 15:20:57 -08:00
kumarabhirup
673c122602
fix: resolve no-shadow lint errors in web app 2026-02-17 00:38:09 -08:00
kumarabhirup
b7baae188c
🚀 RELEASE: full table filter 2026-02-17 00:36:01 -08:00
kumarabhirup
93d734de49
fix: classify non-navigate browser actions as generic to avoid perpetual Loading in fetch groups 2026-02-16 23:10:42 -08:00
kumarabhirup
cd98f0acba
ReportCard: expand report inline instead of navigating away
Open button now toggles an expanded view showing all panels in a full
grid layout with animated transitions. Pin button already saves to
workspace /reports. Lazy-loads additional panel data on first expand
and adds a refresh button in expanded mode.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 23:04:28 -08:00
kumarabhirup
7c2e056437
fix: clear loading state before reconnecting to active stream 2026-02-16 22:58:01 -08:00
youssef
92c76dc4ce fix: route local file paths through raw-file API in webchat markdown images
Images in webchat markdown messages (e.g. agent screenshots) fail to
load because the img component passes local filesystem paths directly
as <img src>, which the browser cannot resolve.

The chain-of-thought component already handles this via
resolveMediaUrl(), but the ReactMarkdown img override did not.

Now non-HTTP/data src values are proxied through
/api/workspace/raw-file?path=... so the server can resolve and serve
local files.
2026-02-17 04:36:28 +00:00
kumarabhirup
371035978c
Enhance chat message styling for better text handling
- Added `overflow-wrap: anywhere` and `word-break: break-word` to `.chat-prose` for improved text wrapping.
- Updated chat message component styles to include `min-w-0` and `overflow-hidden` for better layout control.
- Ensured consistent text breaking behavior across various message elements.
2026-02-16 00:45:28 -08:00
kumarabhirup
dee323b7ad
fix lint/build errors and bump to 2026.2.15-1.4
- Fix all oxlint errors (curly, no-unused-vars, no-base-to-string,
  no-floating-promises, approx-constant, restrict-template-expressions)
- Fix TS build errors: rewrite update-cli.ts as thin wrapper over
  submodules, restore missing chat abort helpers in chat.ts
- Fix web build: wrap handleNewSession in async for ChatPanelHandle,
  add missing safeString helper to entry-detail-modal
- Bump version to 2026.2.15-1.4 and publish

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 00:30:13 -08:00
kumarabhirup
312fb33859
🐛 FIX: new session slow 2026-02-15 23:54:05 -08:00