Skip to content

v2.52.0

Latest

Choose a tag to compare

@bigsk1 bigsk1 released this 28 Jun 09:39

v2.52.0

Highlights

Cloud / Local Mode Plumbing

Predictable startup mode across native launchers, Docker, and every Web UI.

  • Added one canonical JARVIS_MODE resolver with cloud as the backward-compatible default and strict validation for explicit local startup.
  • ./bin/start --local starts the full local-env stack; the dashboard TUI exposes Start All Services (Local) and Start UI Only (Local) without changing existing cloud actions.
  • Web, Canvas, Memory, Intelligence, and Docs honor explicit or inherited startup mode and report startup_mode from health/status endpoints.
  • Memory and Intelligence initialize pristine selected-mode databases; browser data-mode choices remain independent through URL/localStorage selectors.
  • API/services validate the selected env before migration or sync and initialize/migrate only the selected Memory database.
  • Compose JARVIS_MODE reaches every UI; entrypoint validation happens before init and DB checks follow only selected sync modes.
  • Compose mounts config/ read-only, allowing local-only installs without a cloud.env stub and exposing read-only runtime registries without rebuilding.

OpenCode Service Hardening

Safer host OpenCode integration for coding-agent workflows.

  • OpenCode systemd rendering now uses the target user's home instead of root expansion, starts the server in ~/jarvis-workspace, creates projects/, temp/, and deployments/, and pins temp env vars to ~/jarvis-workspace/temp.
  • Added optional HTTP Basic auth for the OpenCode server and web UI via OPENCODE_SERVER_USERNAME / OPENCODE_SERVER_PASSWORD.
  • Jarvis OpenCode API calls, status polling, and bin/opencode-clear-sessions now send Basic auth when configured.
  • Added a git-safe config/opencode.config.json.template, xAI/Grok Build examples, provider-key setup notes, and install/update syncing for workspace-protection plugins.
  • opencode is single-call capped per user request to prevent duplicate build/summary passes.
  • check_opencode_sessions enriches weak OpenCode /session metadata with Jarvis JSONL log summaries: task, model, response preview, duration, token usage, and completion status.
  • OpenCode provider/model defaults now centralize through model_catalog when OPENCODE_* env values are unset.

Jarvis Web — Vision, Canvas, and Video

  • Multi-image vision — upload and analyze several images in one turn (up to 6 cloud / 2 local); image-to-image and image-to-video stay single-reference.
    • Lightweight socket upload metadata with server-side hydration from disk.
    • Centralized multimodal request building in lib/vision_multimodal.py.
    • Follow-up grounding: batch stash labels/tags, uploaded_images metadata, ordinal stash-ref hints in context.
  • Vision upload limit raised to 30MB — supports full-resolution iPhone photos before server-side resize to 1024px.
  • Image Action Modal fixes — provider defaults respect AI config overrides after settings save; Gemini-only options like Google Search grounding appear/hide correctly.
  • Inline Canvas previews — compact vertical page cards with clickable thumbnails and direct links in chat; cards hydrate from the Canvas API for image-backed and text pages.
  • Canvas video embeds — direct and stash-backed videos render generically in Canvas; added a compact Send to Canvas action for the latest Jarvis response.
  • Modular video playback — any stash-backed MP4 tool result can play inline in the Web UI.

New Tool: create_social_clip

MoneyPrinterTurbo B-roll social videos (stock footage + narration + subtitles + BGM).

  • Distinct from generate_video (xAI/Sora/Veo AI animation).
  • POST create → poll task → download MP4 → stash.
  • Configurable voice and wait timeouts via MONEYPRINTER_* env vars.
  • Cursor skill: .cursor/skills/social-clip-video/SKILL.md

Memory UI Alert Notifications

  • Background polling for pending alerts with browser-tab favicon/title flash for newly observed alerts.
  • Optional Alerts-only ding toggle.
  • Server-filtered alert pagination so older pending records remain visible.
  • Alert history lazy-loads while scrolling.

Price Alerts and Runtime Storage

  • Mutable price-alert thresholds moved to shared data/price-alerts.yaml.
  • Legacy config migrates on first use; the one-tool Compose override file is no longer needed.
  • Added lib/price_alert_config.py with focused regression coverage.

Providers and Model Catalog

  • Added Claude Sonnet 4.6 to the model catalog.
  • Dropped retired Anthropic Sonnet 4 / Opus 4 entries; legacy IDs map to Sonnet 4.6 and Opus 4.8.
  • Refreshed example env defaults for the Web UI and tool builder.

Install, Dashboard, and Docker Ops

  • Install guide clarifies automatic OpenCode environment setup and the dashboard-first operating flow.
  • Dashboard startup uses stable tmux control sessions, closes them automatically, and Stop All cleans active and legacy launch sessions.
  • Documented single-service starts and a core post-install checklist.
  • Updated Docker command examples and PowerShell troubleshooting (including local Tool RAG sync commands).

Tools and Small Fixes

  • stock_price — added SpaceX (SPCE) symbol mapping.
  • Completion Guard env examples and AI Config clarify eval vs repair behavior (eval model is auto-mode only; repair passes use the main chat provider).

Fixes & Polish

  • Canvas image embedding: a plain stash-reference note no longer suppresses Markdown image insertion.
  • Suppress redundant Canvas receipt prose without hiding substantive assistant answers.
  • Preserve Canvas preview behavior when conversation history is reopened.
  • OpenCode client exception handling cleanup during config load.
  • Compare-models integration test updated for gemma4.

Docs & README

  • Full mode-plumbing documentation in docs/INSTALL_GUIDE.md and docs/docker/README.md.
  • Multi-image vision docs in docs/JARVIS_WEB_UI.md, docs/api/QUERY.md, and docs/api/IMAGES.md.
  • OpenCode auth/workspace docs in docs/opencode/OPENCODE.md and docs/opencode/OPENCODE_PLUGINS.md.
  • Price alert storage/docs refresh across API and Docker guides.
  • README roadmap and version banner updated for v2.52.0.

Upgrade Notes

Native Installs

Native workflow is unchanged:

git pull
source ~/jarvis-venv/bin/activate   # or your JARVIS_VENV
./bin/start --stop && ./bin/start

Optional after pull:

./bin/backfill-memory-types cloud    # and/or local
./bin/check-memory-sync-health.py cloud

If you use OpenCode with server auth, add credentials to config/cloud.env and run:

./bin/update-opencode-service.sh

Docker Users

No structural compose changes required beyond pulling latest. Price alerts now live in data/price-alerts.yaml (auto-migrated from legacy config on first use).

If the Web UI loops on tool_search after switching to local mode:

docker compose exec jarvis-api python bin/sync-tools.py local --force

See:

Do not run the native watchdog cron while Docker manages background services.

Local Mode

Use explicit local startup when you want the full local stack:

./bin/start --local

Or from the dashboard: Start All Services (Local).

New Optional Environment Variables

Review these optional settings in config/cloud.env.example:

# OpenCode server Basic auth (optional)
# OPENCODE_SERVER_USERNAME=opencode
# OPENCODE_SERVER_PASSWORD=your-opencode-password

# MoneyPrinterTurbo social clips (optional)
# MONEYPRINTER_API_URL="http://192.168.x.xx:8080"
# MONEYPRINTER_MAX_WAIT_SEC=1200
# MONEYPRINTER_VOICE="en-CA-LiamNeural-Male"

Existing OpenCode settings remain authoritative when set:

OPENCODE_PROVIDER="xai"
OPENCODE_MODEL="grok-build-0.1"

Links