Spaces:
Sleeping
Sleeping
Commit History
-
fix: remove CSP nonce from style-src to unblock reagraph canvas (#425)
nykUnverified signatureReplace style-src nonce directive with unsafe-inline to support reagraph's runtime <style> injection. Add style-src-elem and style-src-attr directives for CSP Level 3 compliance. Extend fitNodesInView retries from 2 to 4 for more reliable canvas sizing. Closes #414 Supersedes #415394621e
-
feat: GNAP sync engine for git-native task persistence (#396)
nykUnverified signatureImplements Phase 1 of GNAP (Git-Native Agent Protocol) integration: - SQLite stays primary, GNAP repo is an optional sync target - Push task create/update/delete to .gnap/tasks/{id}.json with git commits - Status/priority mapping between MC and GNAP formats - Management API at /api/gnap (status, init, manual sync) - GNAP badge in task board header with click-to-sync - 15 unit tests covering mapping, init, push, remove, pull, and status Enable with GNAP_ENABLED=true in .env. Follows the same fire-and-forget pattern as the existing GitHub sync engine. Closes #374 Supersedes #3891f1a802 -
fix: reduce server memory footprint (#405)
nykUnverified signature* fix: reduce server memory footprint across session parsing, caching, and rate limiting - Stream-parse Claude JSONL session files instead of loading entire files into memory - Add 50MB file size cap to skip oversized session transcripts - Add 30s TTL cache to getAllGatewaySessions() to avoid redundant disk reads per scheduler tick - Cap rate limiter maps at 10,000 entries with oldest-first eviction - Add request.signal abort listener to SSE route for defense-in-depth cleanup - Add test for rate limiter maxEntries eviction behavior * fix: address audit findings across all memory-fix files claude-sessions.ts: - Wrap readline loop in try/finally to ensure rl.close() on error paths - Guard statSync in file loop to handle files deleted between readdir and stat - Fix variable shadowing: rename inner `now` to `nowSec` to avoid confusion - Update throttle timestamp on empty scan results (prevents repeated disk scans) - Skip sidechain-only sessions (zero user+assistant messages) sessions.t…c963447
-
fix: docker compose pids location + clear stale update banner
nykUnverified signature- Move pids limit from service-level `pids_limit` to `deploy.resources.limits.pids` for Compose v5+ compatibility. Some Compose versions normalize both into the same field, causing "can't set distinct values" errors. - Clear OpenClaw update banner when `/api/openclaw/version` reports `updateAvailable: false`. Previously the banner could persist after a successful update because only the `true` path was handled. Closes #353, closes #3513211a63 -
fix: unify GitHub sync token resolution with integrations env file
BrixyyUnverified signature28d83bd -
fix: cron panel crash on missing schedule + doctor parser false positive (#347)
nykUnverified signature- Filter out cron jobs with missing/empty schedule before processing, preventing TypeError on .toLowerCase() (#342) - Add defensive .localeCompare() guard in sort comparator - Exclude positive/instructional lines ("No ... warnings detected", "Run: ...") from doctor issue extraction (#331) - Strip negated warning phrases before keyword detection so "No channel security warnings detected" doesn't trigger warning level - Add 2 tests for the doctor parser fix0dcf69a -
test: add coverage for pure utility modules, fix Vitest 60% threshold (#339)
HonzysClawdbotUnverified signature* fix(db): add busy_timeout pragma and guard build-phase eager init - Add busy_timeout = 5000 pragma to prevent SQLITE_BUSY errors under concurrent Next.js route-handler requests (WAL mode helps but is not sufficient without a retry budget). - Guard module-level getDatabase() call with !isBuildPhase to prevent build-time vs runtime SQLite state conflicts on cold starts. - Add tests covering both pragmas and build-phase skip behaviour. * security(skill-registry): add path traversal and SSRF detection rules - Add 'path-traversal' rule: detects ../../ and URL-encoded variants - Add 'ssrf-internal-network' rule: detects fetch/curl/wget/axios targeting localhost, 127.x, 0.0.0.0, RFC-1918 private ranges, and *.internal hosts - Add 'ssrf-metadata-endpoint' rule: detects access to cloud metadata endpoints (AWS 169.254.169.254, GCP metadata.google.internal) - Add 14 new tests covering all new rules including edge cases Closes #security-completeness * test: add coverage for pure u…eb47743 -
fix(db): add busy_timeout pragma and guard build-phase eager init (#337)
HonzysClawdbotUnverified signature- Add busy_timeout = 5000 pragma to prevent SQLITE_BUSY errors under concurrent Next.js route-handler requests (WAL mode helps but is not sufficient without a retry budget). - Guard module-level getDatabase() call with !isBuildPhase to prevent build-time vs runtime SQLite state conflicts on cold starts. - Add tests covering both pragmas and build-phase skip behaviour.40f303b -
feat(gateway): detect port-based Tailscale Serve proxies (#330)
Unverified signatureThe existing Tailscale Serve detection only looked for a /gw path handler, missing configurations where the gateway is proxied on a separate port (e.g. :8443 → localhost:18789). This caused remote browsers to attempt direct wss connections to the gateway port, which fails through Tailscale. Extract Tailscale Serve detection into src/lib/tailscale-serve.ts and extend it to discover port-based proxy mappings from the Tailscale Serve JSON config. Also adds the macOS app bundle path for the Tailscale CLI binary, which is not on PATH when installed via the Mac App Store.11b3669 -
fix(ui): null-safe trim calls in agent model config (#329)
nykUnverified signature* fix(ui): null-safe trim calls in agent model config (#319) Guard against undefined values in .trim() calls when editing agent model configuration (primary model and fallback array entries). Closes #319 * test: add unit tests for null-safe trim in agent model config Tests verify that undefined/null values in model primary and fallback arrays don't cause trim() TypeError crashes. * test(e2e): add agent model config edge case tests Tests verify PUT /api/agents/:id with valid config, empty fallbacks, empty primary, and whitespace-only fallback entries.db34d19 -
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 -
fix(docker): Compose v5 pids_limit + copy public assets (#327)
nykUnverified signature* fix(docker): move pids to service-level pids_limit and copy public assets - Move `pids: 256` from `deploy.resources.limits` to service-level `pids_limit` for Docker Compose v5+ compatibility (#322) - Add `COPY --from=build /app/public ./public` to Dockerfile runtime stage so static assets (logos, icons) are available at runtime (#323) Closes #322, closes #323 * test: add Docker config validation tests Verifies pids_limit is at service level (Compose v5+), public dir is copied in Dockerfile, and all required COPY instructions exist.932b27c
-
fix(auth): fix HTTP/Tailscale login — opt-in HTTPS redirect, CSP nonce propagation
Nyk- Replace unconditional HTTP→HTTPS redirect with opt-in via NEXT_PUBLIC_FORCE_HTTPS=1 - Propagate CSP nonce into forwarded request headers so SSR inline scripts get the nonce - Bind nonce attribute to layout's inline theme script to prevent CSP violations - Extract CSP and browser-security helpers into dedicated modules with tests Closes #308, #309, #311805a069
-
fix(auth): allow login on fresh HTTP Docker installs (#304)
nykUnverified signature* fix(auth): allow login cookies on HTTP docker deployments * test(types): avoid readonly process.env writes in session-cookie tests0f4105b -
Add Venice AI integration and model support (#301)
Joshua Mo +2: Cursor Agent, Joshua MoUnverified signatureCo-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Joshua Mo <joshua-mo-143@users.noreply.github.com>ccf9166 -
test(tasks): replace external repo fixture with neutral local slug
Nyk37b0458 -
feat(tasks): persist implementation target metadata for deterministic routing (#297)
RazorFin +1: clawdbot_nonadminUnverified signature* Add task implementation target metadata support for heartbeat routing * test(tasks): verify implementation target metadata persistence and routing precedence --------- Co-authored-by: clawdbot_nonadmin <clawdbot_nonadmin@clawdbot-admins-MacBook-Pro.local>b09bc8b
-
fix: dynamic coordinator routing + boxed doctor parsing (#279)
nykUnverified signature* fix: route coordinator sends to live sessions and parse boxed doctor output * feat: make coordinator routing user-configurable and deployment-agnostic * feat: add coordinator target dropdown in settings * feat(settings): preview live coordinator routing resolutioncd054b5 -
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
-
fix(sync): support commented/trailing-comma OpenClaw config (#235)
nykUnverified signatured842037 -
fix(security): enforce server-side actor identity (#224)
nykUnverified signature* fix(security): enforce server-side actor identity * test: align message schema assertion with actor hardening * fix(security): enforce server actor identity in chat and broadcast * feat(auth): add scoped agent API keys with expiry and revocationcec279d -
chore: merge main into feat/task-outcome-feedback-192 to resolve PR #207 conflicts
Nykbc8debc -
feat(tasks): add outcome tracking and feedback analytics
Nyk3fbaffd -
feat(costs): add task-level token attribution and task-cost rollups
Nyk24822c8 -
fix(gateway): use stored token for websocket connect payload
Nyk395fc60 -
fix(gateway): improve remote websocket URL handling and client-id errors
Nyk7f2d33e -
Merge pull request #201 from builderz-labs/fix/184-assignment-status-normalization
nykUnverified signaturefix(tasks): auto-normalize assignment status transitionseca771d -
fix(tasks): auto-normalize assignment status transitions
Nyk3fd1706
-
fix: correct token costing and add provider subscription detection
Nyka744127 -
feat: add validated @mentions for tasks and comments
Nyk200c64b -
fix: resolve cron calendar and auth regressions from open issues
Nyk250a974 -
fix: support AUTH_PASS_B64 for seeded admin password
Nyk2b182b0
-
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: audit hardening, webhook retry, and local Claude session tracking (#68)
nykUnverified signatureSecurity hardening: - Fix timing-safe comparison bugs in webhooks.ts and auth.ts (was comparing buffer with itself) - Harden rate limiter IP extraction — use rightmost untrusted IP from XFF chain with MC_TRUSTED_PROXIES support - Add 12-char minimum password validation in Zod schema and runtime check - Add Zod validation on PUT /api/tasks bulk status update Webhook retry system (completing in-progress feature): - Exponential backoff with circuit breaker in webhooks.ts - POST /api/webhooks/retry endpoint for manual retry - GET /api/webhooks/verify-docs endpoint for signature verification docs - Scheduler integration for automatic retry processing - Unit tests for signature verification and backoff logic Local Claude Code session tracking: - New claude-sessions.ts scanner parses JSONL transcripts from ~/.claude/projects/ - Extracts model, tokens, messages, cost estimates, active status per session - Migration 020 adds claude_sessions table - GET/POST /api/claude/sessions endpoint with …959f8d7
-
feat: v1.2.0 — validation hardening, unit tests, quality improvements
Nyk- Fix task status enum mismatch (blocked → quality_review) - Add 12 Zod schemas for all unvalidated mutation routes - Apply validateBody() across 11 API route handlers - Add readLimiter (120/min) for GET-heavy endpoints - Extend heavyLimiter to search, backup, cleanup routes - Add security headers (X-Content-Type-Options, X-Frame-Options, Referrer-Policy) - Fill auth test stubs with real assertions (safeCompare, requireRole) - Add validation, rate-limit, and db-helpers unit test suites (60 tests total) - Replace as-any casts with typed interfaces (SessionQueryRow, UserQueryRow, CountRow) - Bump version to 1.2.0, add CHANGELOG.md, update README roadmapbfccd36
-
fix: strict mode, test stubs, pagination counts, N+1 queries, CSP hardening
Nyk- Enable TypeScript strict mode and fix all resulting type errors - Add auth test stubs for requireRole and safeCompare - Add proper COUNT(*) pagination totals to agents, tasks, notifications, messages, conversations, and standup history endpoints - Fix N+1 queries by hoisting db.prepare() outside loops in agents, activities, notifications, conversations, standup, gateway health, and notification delivery routes - Remove unsafe-eval from CSP script-src directive - Remove deprecated X-XSS-Protection headerd258620