Spaces:
Sleeping
Sleeping
Commit History
-
feat: add awaiting_owner task status detection (#428)
nykUnverified signatureAdd awaiting_owner column to task board with keyword-based detection for tasks requiring human action. Tasks matching keywords like "waiting for", "needs human", "approval needed" are automatically placed in a dedicated column with orange styling. Supersedes #3971ec4113
-
feat: hybrid mode — show gateway + local sessions simultaneously (#392)
nykUnverified signatureAlways merge both gateway and local (Claude Code, Codex, Hermes) sessions in the sessions API instead of gating on `include_local`. The conversation list now renders all sources unconditionally, using each session's `source` field for display logic rather than the global `dashboardMode`. - Add `localSessionsAvailable` store flag, set from capabilities `claudeHome` - Remove `include_local` query param and early-return in sessions API - Remove source-based filter and `dashboardMode` branching in conversation list - Show both gateway and local active/recent groups when data exists85e41f4 -
feat: task assignment session targeting (#399)
HonzysClawdbotUnverified signature* feat: add task session targeting - dispatch tasks to specific agent sessions (#395) When assigning a task to an agent, users can now optionally select an existing session to dispatch the task to instead of creating a new one. Changes: - task-dispatch.ts: When target_session is set in task metadata, use gateway chat.send to dispatch to that specific session instead of creating a new one via call agent - task-board-panel.tsx: Add session selector dropdown in both Create and Edit task modals that appears when an agent is selected and has active sessions - store/index.ts: Add agent and channel fields to Session interface Closes #395 * fix(gateway): ensure gateways table exists before health probe The gateways table is created lazily by the gateways API (ensureTable). The health route was querying it directly without CREATE IF NOT EXISTS, causing SqliteError: no such table: gateways in fresh databases (E2E tests, Docker first-boot). Add ensureGatewaysTable() inline to mirror…66bd6b3
-
fix(ui): persist doctor banner dismiss with 24h expiry (#328)
nykUnverified signature* fix(ui): persist doctor banner dismiss with 24h expiry (#320) Replace ephemeral useState dismiss with Zustand store + localStorage. Banner stays hidden for 24 hours after dismiss, then resurfaces so users can re-check. Mirrors the existing UpdateBanner pattern. Closes #320 * test: add unit tests for doctor banner dismiss persistence Tests verify localStorage persistence, 24h expiry, page refresh survival, and graceful handling of corrupted values.ce66f43
-
feat(refactor): ready for manual QA after main sync (#274)
nyk +1: Claude Opus 4.6Unverified signature* fix: preserve gateway token query in websocket URLs * fix: classify secure-context device identity handshake errors * fix: normalize trailing dot in host allowlist checks * fix: support proxied gateway websocket paths and tailnet host normalization * fix: auto-connect startup to primary configured gateway * fix: keep gateway tokens server-side only * fix: allow authenticated viewers to resolve gateway connect credentials * fix: identify mission control as operator gateway client * fix: redirect remote http sessions to https for gateway auth * fix: support URL-style gateway hosts in health probes * fix: resolve primary gateway credentials from detected openclaw runtime * fix: hide duplicate gateway connection summary when managed * refactor: remove super admin and workspaces panels from UI navigation * fix: treat configured gateways as full-mode capability * refactor: move promo banner copy into subtle footer note * fix: stabilize gateway websocket connect protocol dete…b6ecafa
-
feat(tasks): add outcome tracking and feedback analytics
Nyk3fbaffd
-
feat: add workspace discoverability and multi-project task support
Nyk64eac97
-
feat: phase 1 workspace isolation across auth and core APIs (#112)
nykUnverified signature* 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 markdown4e0867d -
feat: add Update Available banner with GitHub release check (#94)
nykUnverified signature* fix: migrate middleware.ts to proxy.ts for Next.js 16 (#88) Next.js 16 deprecated the `middleware` file convention in favor of `proxy`. The proxy runs on the Node.js runtime instead of Edge, so safeCompare now uses crypto.timingSafeEqual instead of manual XOR. All auth logic, CSRF validation, host matching, and security headers are preserved unchanged. * feat: add "Update Available" banner with GitHub release check Add a dismissible emerald banner that appears when a newer GitHub release exists, so self-hosting users know an update is available. The banner dismisses per-version (reappears for new releases). - Create src/lib/version.ts as single source of truth from package.json - Add /api/releases/check route with 1hr caching and graceful fallback - Add UpdateBanner component mirroring LocalModeBanner pattern - Add update state to Zustand store with localStorage persistence - Fix hardcoded v2.0 in header-bar.tsx and 2.0.0 in websocket.ts1b11b46 -
fix: task board SSE wiring, priority enum, webhook event, auto-advance, parallel broadcast (#73) (#89)
nykUnverified signature- Wire task board panel into Zustand store for real-time SSE updates instead of local useState; add useSmartPoll fallback when SSE disconnects - Fix priority enum mismatch: UI now uses 'critical' matching the Zod validation schema instead of 'urgent' - Add 'task.status_changed' to webhook EVENT_MAP so external consumers receive status transition events - Auto-advance task to 'done' column when aegis quality review approves, broadcasting task.status_changed for real-time UI update - Parallelize broadcast loop with Promise.allSettled so N agents execute concurrently (~10s) instead of serially (N×10s) Closes #73d29b161 -
feat: add local mode auto-detection for no-gateway users (#83)
nykUnverified signatureWhen no OpenClaw gateway is detected, Mission Control now automatically switches to Local Mode — showing a clear info banner, greying out gateway-dependent panels, and surfacing Claude Code session stats, GitHub profile data, and subscription-aware cost display. Changes: - Add capabilities endpoint to detect gateway, Claude home, subscription - Add dashboardMode/gatewayAvailable/subscription state to Zustand store - Add dismissible LocalModeBanner component - Grey out Agents/Spawn/Config nav items when no gateway - Show blue "Local Mode" indicator instead of red "Disconnected" - Dashboard shows local metric cards (sessions, projects, tokens, cost) - Claude Code Stats panel with session/token/cost breakdown - GitHub panel with repo stats, languages, star/fork counts - Subscription detection from ~/.claude/.credentials.json - Show "Included (Max plan)" instead of dollar cost for subscribers - Fix token cost estimation (cache reads at 10%, not 100%) - Sessions API falls back to local Cla…bfb8731
-
fix: send jobId/jobName instead of command when triggering cron jobs
NykThe triggerJob function was sending { command: job.command } to the API, but the backend expects jobId or jobName to identify the job. This caused all manual cron triggers to fail with "Job ID required" (400 error). Also adds the missing `id` field to the CronJob store interface so TypeScript recognizes the field already returned by the API.8649dcc
-
feat: add Docker support, session controls, model catalog, API rate limiting
Nykb608851
-
feat: initial open-source release
NykOpenClaw Mission Control — agent orchestration dashboard. Built with Next.js 16, React 19, TypeScript, SQLite, and Tailwind CSS. MIT License.bbbc03f