Commit Graph

125 Commits

Author SHA1 Message Date
beeman 9d39e51f56
fix: prevent Live Feed sidebar from sliding in on page navigation (#181)
Only apply the slide-in-right animation when the user actively
re-expands the panel, not on initial mount. Also remove dead
duplicate files src/live-feed.tsx and src/page.tsx.
2026-03-05 11:00:44 +07:00
Patrick 6f2f0e74af
feat: add configurable PORT for dev and start servers (#179)
- package.json: dev and start scripts now use ${PORT:-3000}
- Dockerfile: healthcheck uses ${PORT:-3000}, ENV PORT=3000 as default
- docker-compose.yml: passes PORT env to container, maps MC_PORT to PORT
- .env.example: documents PORT variable

Set PORT=<number> to change the listening port. Defaults to 3000.
Previously dev used Next.js default (3000) and start hardcoded 3005.
2026-03-05 11:00:34 +07:00
Bhavik Patel 298fbef562
fix: lock task comment author to authenticated user
- Remove manual Author text input from comment form (security concern)
- Use authenticated currentUser.username as comment author automatically
- Display 'Posting as <username>' read-only indicator
- Add inline documentation explaining comment vs broadcast semantics
- Document subscription model: auto-subscribed on create, assign, comment, @mention

Fixes #167
2026-03-05 10:58:53 +07:00
Bhavik Patel 3ef4c5a83a
feat: expand OpenAPI spec coverage and docs metadata
- Add 11 missing API routes to openapi.json (70 total paths now)
  - /api/docs, /api/mentions, /api/projects, /api/projects/{id},
    /api/projects/{id}/tasks, /api/quality-review, /api/claude/sessions,
    /api/github, /api/releases/check, /api/webhooks/retry,
    /api/webhooks/verify-docs
- Add 5 new tags: Projects, Mentions, Quality, Releases, Docs
- Add Project schema to components
- Bump spec version to 1.3.0
- Sort all paths alphabetically for consistency
- Interactive Scalar docs page already at /docs (unchanged)

Fixes #158
2026-03-05 10:58:51 +07:00
Bhavik Patel 4ab6f8a5a1
fix: improve workspace creation discoverability in super admin
- Add prominent '+ Add Workspace' button in the Super Admin header
  (always visible, next to Refresh)
- Replace hidden 'Show Create Client Instance' toggle with a clear
  'Create New Workspace' section with close (×) button
- Highlight the create form with primary border when open
- Improve instructional text for the creation workflow

Fixes #169
2026-03-05 10:58:49 +07:00
Bhavik Patel 0557bd7385
fix: restore @mention autocomplete visibility in task modal
- Increase MentionTextarea dropdown z-index to z-[60] so it renders
  above z-50 modals (was z-20, clipped by overflow-y-auto on modal)
- Replace plain textarea in broadcast section with MentionTextarea
  for consistent @mention support across all text inputs
- Add hint text to broadcast placeholder about @mention usage

Fixes #172
2026-03-05 10:58:47 +07:00
Bhavik Patel b130b881a0
docs: improve workspace and memory UX guidance
Issue #146 — How to add workspace:
- Add Workspace Management section to README with Super Admin panel docs
- Add Super Admin API endpoints to API overview table
- Add info banner in Settings panel (admin only) linking to Super Admin

Issue #143 — Memory tab in agent view:
- Add info banner in agent Memory tab clearly distinguishing agent
  working memory (DB scratchpad) from workspace memory files
- Add clickable link to Memory Browser page from agent Memory tab
- Improve subtitle text with WORKING.md storage detail

Fixes #146
Fixes #143
2026-03-05 10:58:45 +07:00
nyk ec9ba45628
feat: provision full OpenClaw workspaces from agent creation 2026-03-05 10:57:17 +07:00
fulgore d59b2e70a1
fix: macOS compatibility for status commands and gateway client id
Replace Linux-only commands (uptime -s, free -m, df --output=pcent) with
cross-platform alternatives using process.platform detection and Node.js
os module. Rename gateway client ID from control-ui to openclaw-control-ui.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:57:15 +07:00
nyk 4cb86bc80b
Merge pull request #168 from builderz-labs/fix/165-agent-modal-ui
feat: improve agent detail modal visual design
2026-03-05 00:14:23 +07:00
nyk 12b82168e5
Merge pull request #166 from builderz-labs/fix/164-token-cost-subscription-detection
fix: correct token cost math and add subscription-aware provider detection
2026-03-05 00:14:02 +07:00
Nyk 2413ab22a0 feat: improve agent detail modal visual design 2026-03-05 00:10:49 +07:00
Nyk 13e91d3d33 fix: correct token costing and add provider subscription detection 2026-03-05 00:05:14 +07:00
nyk e8623ac7f0
Merge pull request #162 from builderz-labs/feat/156-task-mentions
feat: add validated @mentions for task descriptions and comments
2026-03-04 23:56:22 +07:00
Nyk 36d5891d85 feat: add validated @mentions for tasks and comments 2026-03-04 23:37:45 +07:00
nyk dc4a3c539c
Merge pull request #155 from builderz-labs/feat/issues-146-143-145
feat: workspace discoverability and multi-project task support
2026-03-04 23:25:06 +07:00
nyk 68b4de83d1
Merge pull request #157 from builderz-labs/fix/154-unified-agent-save
fix: unify agent config save in one backend operation
2026-03-04 23:23:20 +07:00
Nyk eebaaacda3 test: exclude openclaw harness spec from default e2e suite 2026-03-04 23:21:29 +07:00
Nyk 914a6c4cd0 fix: unify agent config save across mission control and gateway 2026-03-04 23:18:23 +07:00
Nyk caf1dbf5ef merge: resolve PR conflicts and add OpenClaw offline E2E harness 2026-03-04 23:11:59 +07:00
nyk e3c33a6a0c
Merge pull request #139 from bhavikprit/feat/39-structured-logging
feat(#39): replace console.log/error/warn with structured client logger
2026-03-04 22:49:06 +07:00
Nyk a9df1a25a5 feat: add workspace discoverability and multi-project task support 2026-03-04 22:44:57 +07:00
nyk f866861eb4
Merge pull request #141 from telnyxpete/security-hardening
Fix XSS in memory-browser-panel
2026-03-04 22:28:16 +07:00
nyk e67350095b
Merge branch 'main' into feat/39-structured-logging 2026-03-04 22:27:52 +07:00
nyk e8229cd290
feat: add URL-based task deep links and agent task links 2026-03-04 22:26:06 +07:00
Nyk 4b3781c9cc feat: add task URL deep-linking and agent task links 2026-03-04 22:24:42 +07:00
Nyk d1d75b3b15 fix: resolve cron calendar and auth regressions from open issues 2026-03-04 22:18:57 +07:00
Nyk 0e01f5d4b3 fix: add OpenClaw 3.2 compatibility for spawn and gateway health 2026-03-04 21:59:20 +07:00
nyk a79a6c22dd
Merge branch 'main' into feat/39-structured-logging 2026-03-04 21:21:38 +07:00
nyk 6a49751599
Merge pull request #138 from bhavikprit/feat/40-accessibility
feat(#40): improve frontend accessibility (WCAG 2.1 AA)
2026-03-04 21:20:49 +07:00
Bhavik Patel 882fbcb74c
fix: enable editing identity, sandbox, and tools in agent config UI (#148)
* fix(#140): enable editing of identity, sandbox, and tools in agent config UI

The ConfigTab's structured view only showed read-only displays for
Identity, Sandbox, and Tools sections even when in edit mode. Added
inline editing controls:

- Identity: emoji, name, theme/role inputs + identity content textarea
- Sandbox: mode/workspace dropdowns + network input
- Tools: allow/deny lists with add/remove buttons and Enter key support

Also added helper functions (updateIdentityField, updateSandboxField,
addTool, removeTool) and state for new tool entries.

Fixes #140

* fix: align sandbox edit values with agent schema

---------

Co-authored-by: Nyk <0xnykcd@googlemail.com>
2026-03-04 17:00:25 +07:00
Bhavik Patel 49158507d8
fix: improve Docker build reliability and layer caching (#137)
- Fix deps stage: copy only package.json + pnpm-lock.yaml* for proper
  layer caching instead of COPY . . which invalidates cache on any change
- Copy node_modules from deps into build stage separately from source
- Copy schema.sql into runtime stage (migration 001_init reads it at
  runtime via process.cwd(), but standalone output omits source files)
- Remove broken public* glob COPY (no public/ dir exists; Docker COPY
  fails silently with incorrect glob syntax)
- docker-compose: add container_name, configurable port via MC_PORT,
  mark .env as optional to avoid startup failure if missing

Fixes #129
2026-03-04 16:57:00 +07:00
Bhavik Patel 0952065172
fix: add transpilePackages for ESM-only markdown deps (#147)
Add react-markdown and remark-gfm to transpilePackages in next.config.js
so Next.js transpiles these ESM-only modules correctly in all environments.
This fixes 'Module not found: Can't resolve remark-gfm' build errors.

Fixes #142
2026-03-04 16:56:57 +07:00
Pete Christianson e6ec050ec3 Fix XSS in memory-browser-panel
Replace dangerouslySetInnerHTML with React elements for inline
formatting (bold/italic). New renderInlineFormatting() helper returns
React nodes instead of raw HTML strings, eliminating XSS risk from
user-controlled memory content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 00:42:08 -08:00
Bhavikprit 797799ae0b feat(#39): replace console.log/error/warn with structured client logger
Add src/lib/client-logger.ts and replace all 55+ console calls across 19 client files with scoped createClientLogger instances. Production suppresses debug+info. Fix variable shadowing in log-viewer-panel.tsx.

Addresses #39
2026-03-04 11:29:48 +04:00
Bhavikprit 971befe193 feat(#40): improve frontend accessibility (WCAG 2.1 AA)
- Add reusable useFocusTrap hook for modal focus management with
  Escape key support and focus restoration on close
- Task board: add role=region and aria-label to kanban columns,
  role=button and keyboard support (Enter/Space) to task cards,
  role=alert on error display, role=status on loading spinner
- Modals: add role=dialog, aria-modal, aria-labelledby, focus
  trapping, backdrop click to close, aria-label on close buttons
- Tab interface: add role=tablist/tab/tabpanel with aria-selected
  and aria-controls for task detail tabs
- Forms: add htmlFor/id associations on all modal form labels
- Layout: add skip-to-content link for keyboard navigation,
  id=main-content on main element

Addresses #40
2026-03-04 11:17:21 +04:00
nyk 3681420376
Merge pull request #136 from builderz-labs/fix-auth-pass-hash-env-134
fix: support # in seeded admin password env config
2026-03-04 12:59:02 +07:00
Nyk 43a47ad886 fix: support AUTH_PASS_B64 for seeded admin password 2026-03-04 12:57:43 +07:00
nyk bcae068da9
Merge pull request #133 from builderz-labs/feat-promo-banner-links
feat: add promotional banner and service CTA
2026-03-04 09:57:45 +07:00
Nyk 2287b46e25 feat: add service CTA and update promo links 2026-03-04 09:54:35 +07:00
Nyk 760e0a255f feat: add promo banner for nyk, DictX, and Flight Deck Pro 2026-03-04 09:52:21 +07:00
nyk 57dee2094a
feat: scope workflows and webhooks to workspace (#132) 2026-03-04 09:28:43 +07:00
nyk 3662ab0fe7
fix: stop gateway handshake retry spam and improve origin guidance (#131) 2026-03-04 08:41:41 +07:00
nyk 2111f03542
fix: prevent Docker build failure when pnpm lockfile is missing (#130)
* fix: make docker build resilient when lockfile is absent

* test: update e2e credentials for secure admin seed policy
2026-03-04 08:33:09 +07:00
Bhavik Patel 90b712ea29
feat(#115): virtual office visualization for agents (#127)
- Create OfficePanel with Office floor plan and Org Chart view modes
- Desk-style cards with status glow, emoji indicators, pulse animation for busy agents
- Agent detail modal with task stats, activity, session info
- Auto-refresh every 10 seconds for real-time updates
- Status summary in header (working/idle/error/away counts)
- Add OfficeIcon and office nav item in CORE group
- Register office route in page.tsx

Closes #115

Co-authored-by: bhavikprit <petrobhakti@gmail.com>
2026-03-04 08:03:24 +07:00
Mark Liu 720872a391
security: reject known-insecure default passwords during admin seeding (#123)
The admin seeding function previously fell back to password 'admin' when
AUTH_PASS was unset, and accepted any value from .env.example including
the documented default 'change-me-on-first-login'. This meant a user who
copied .env.example without changing the password (or forgot to set
AUTH_PASS entirely) would have an instance running with publicly known
credentials.

The seeding function now:
- Skips seeding entirely if AUTH_PASS is not set (instead of defaulting
  to 'admin')
- Checks AUTH_PASS against a blocklist of known insecure values
  (admin, password, change-me-on-first-login, changeme, testpass123)
- Logs a clear warning explaining what to do in both cases

Existing instances that already have users in the database are not
affected — the seeding function only runs when the users table is empty.

Signed-off-by: Mark Liu <mark@prove.com.au>
2026-03-04 08:03:11 +07:00
nyk 498cb2f8d5
feat: phase 1 workspace isolation across auth and core APIs (#112)
* feat: add workspace-scoped auth sessions and core API filtering

* feat: extend workspace scoping to search status standup and messaging

* feat: scope agent connect github and alert workflows by workspace

* fix: scope status sync and session alerts by workspace

* feat: add phase2 workspace migration and scope chat pipeline alerts

* feat: add model selection for agents and cron jobs

* feat: add deterministic agent avatars to task and squad views

* feat: add read-only cron calendar and agenda views

* feat: render task descriptions with markdown
2026-03-04 00:27:47 +07:00
nyk d682395266
feat: improve agent config tab model editing and display 2026-03-03 21:07:12 +07:00
nyk 6cd5e3e534
feat: enrich agent config with workspace identity and tools 2026-03-03 21:07:02 +07:00
nyk e4594c7854
feat: aggregate token usage from db with stable agent grouping 2026-03-03 21:06:54 +07:00