Releases: bigsk1/jarvis-voice
v2.52.0
v2.52.0
Highlights
Cloud / Local Mode Plumbing
Predictable startup mode across native launchers, Docker, and every Web UI.
- Added one canonical
JARVIS_MODEresolver with cloud as the backward-compatible default and strict validation for explicit local startup. ./bin/start --localstarts 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_modefrom 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_MODEreaches 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 acloud.envstub 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, createsprojects/,temp/, anddeployments/, 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-sessionsnow 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. opencodeis single-call capped per user request to prevent duplicate build/summary passes.check_opencode_sessionsenriches weak OpenCode/sessionmetadata with Jarvis JSONL log summaries: task, model, response preview, duration, token usage, and completion status.- OpenCode provider/model defaults now centralize through
model_catalogwhenOPENCODE_*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_imagesmetadata, 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.pywith 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.mdanddocs/docker/README.md. - Multi-image vision docs in
docs/JARVIS_WEB_UI.md,docs/api/QUERY.md, anddocs/api/IMAGES.md. - OpenCode auth/workspace docs in
docs/opencode/OPENCODE.mdanddocs/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/startOptional after pull:
./bin/backfill-memory-types cloud # and/or local
./bin/check-memory-sync-health.py cloudIf you use OpenCode with server auth, add credentials to config/cloud.env and run:
./bin/update-opencode-service.shDocker 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 --forceSee:
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 --localOr 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
- Full changelog: docs/README.md — see the Change Log section.
- Previous release: v2.51.0
v2.51.0
Highlights
Experimental Docker Web Stack
Run Jarvis Web UIs and services in Docker on your own machine — local build only, no published image.
-
Added root
Dockerfileanddocker-compose.ymlfor Web UI, API, Canvas, Memory, Intelligence, Docs, and background services:- Reminders
- Follow-up
- Scheduled tasks
-
Bind-mounts your existing
data/,config/,logs/, andaudio/directories.- Existing databases are reused.
- Databases are not wiped on container recreate.
-
Hybrid use: run Web UIs in Docker while keeping wake word, CLI, and host-only tools native when desired.
-
Added tracked tool profile:
skills/profiles/docker.json- Disables container-incompatible tools such as Spotify OAuth, SSH, host shell, OpenCode, and similar host-only tools.
-
Added internal container routing:
jarvis-apijarvis-canvas- Docker-network service routing
-
Added optional API auth.
-
Added
restart: unless-stopped. -
Added crash-safe init locking.
-
Separated Docker-managed background services from the native cron watchdog.
-
Added Docker guides for Linux, macOS, and Windows using Docker Desktop:
-
Added opt-in MCP support through the Docker socket:
docker-compose.mcp.yml- Linux trusted-host setups only.
Memory, Profile, and Learning
-
Cross-turn correction learning
USER_CORRECTION_LEARNING_MODE=shadow|apply- Links turn-2 corrections to prior experiences.
- Topic-pivot guard avoids false positives on new questions.
-
Profile Card
- Compact operator context from
jarvis-intel/user_profile.md. - Injected at router and synthesis boundaries.
- Does not pollute Tool RAG.
- Compact operator context from
-
user_modelcache- Compiled profile card stored in SQLite.
./bin/reconcile-profilereports drift versus memories and lessons for human review.
-
Memory type filtering
-
remember()now stamps memories as:preferencefactartifacttransient
-
Auto-inject can exclude noisy memory types.
-
Added
./bin/backfill-memory-typesfor existing rows.
-
-
Memory sync health
./bin/check-memory-sync-health.pyreports cloud/local drift.sync-memory-db.pynow syncs theuser_modeltable.
Providers and Routing
-
OpenAI Responses API
- Optional
/v1/responsesrouting whenOPENAI_API_MODE=responses. - Adapter includes Chat Completions fallback.
- Hosted-tool gates.
- Safer tool-result previews for follow-ups.
- Optional
-
xAI
- Added
grok-build-0.1to the model catalog. - Improved SDK client-tool routing.
- Improved in-flight continuation behavior.
- OpenAI SDK bumped to 2.24.0.
- Added
-
Anthropic
- Added Claude Opus 4.8 to the model catalog.
-
Gemini video
- Fixed 16:9 aspect ratio mapping.
-
Crypto charts
- Improved Web UI and Canvas rendering for price charts.
Voice, Web UI, and Reliability
-
Fixed wake-word to Q&A handoff.
-
Fixed dashboard launch timing.
-
Orchestrator subprocess cancel path now drains
stdoutandstderrin a background thread.- Reduces hung tool calls on timeout or cancel.
-
Shared Web UI auth across Docker services:
- Memory
- Intelligence
- Docs
-
Intelligence schema initializer now runs when required tables are missing.
- Improves fresh install behavior.
-
Reminders
create_remindernow handles year parsing more reliably.
-
Skips redundant native server-side tools when Web upload vision is already attached.
Fixes & Polish
-
Pinned FastAPI
<0.137for Docker/API metrics compatibility withprometheus-fastapi-instrumentator. -
Docker init improvements:
- Profile content hash in sync marker.
flock-based init lock.- Separate
logs/docker/PID files. - Watchdog skips when Docker Compose is running.
-
Corrected unavailable
fpdf2dependency pin. -
Wake-word script import cleanup.
-
Removed unused imports across services.
Docs & README
-
Full docs audit refresh, passes 1–4.
-
Archived stale planning docs.
-
Split Docker user guide and planning docs:
-
Updated:
- Config examples
- Provider docs
- Web UI layout docs
- Install guide
-
Added watchdog cron note for Docker users.
-
Updated README banner.
-
Refreshed Web UI screenshots.
Upgrade Notes
Native Installs
Native workflow is unchanged:
git pull
source ~/jarvis-venv/bin/activate # or your JARVIS_VENV
./bin/start --stop && ./bin/startOptional after pull:
./bin/backfill-memory-types cloud # and/or local
./bin/check-memory-sync-health.py cloudTrying Docker
Docker support is experimental.
cp docker.env.example .env
cp config/cloud.env.example config/cloud.env
cp config/local.env.example config/local.env
docker compose build
docker compose up -dOptional extras:
docker compose --profile extras up -dSee:
Do not run the native watchdog cron while Docker manages background services.
Local Mode in Docker
If the Web UI loops on tool_search after switching to local mode, run:
docker compose exec jarvis-api python bin/sync-tools.py local --forcePowerShell-friendly notes are available here:
New Optional Environment Variables
Review these new optional settings:
USER_CORRECTION_LEARNING_MODE=shadow|apply
AUTO_MEMORY_TYPE_FILTER_ENABLED=true
OPENAI_API_MODE=responses
OPENAI_RESPONSES_TOOLS=true
JARVIS_DOCKER_API_AUTH=Notes:
OPENAI_API_MODE=responsesandOPENAI_RESPONSES_TOOLS=trueare OpenAI-only settings.JARVIS_DOCKER_API_AUTHbelongs in the root.envfile for Docker API auth.
Links
- Full changelog:
[docs/README.md](https://github.com/bigsk1/jarvis-voice/docs/README.md)— see the Change Log section. - Previous release:
v2.50.1
v2.50.1
Highlights
OpenAI Responses API
- Added routing support for the OpenAI Responses API.
- Added documentation for the new Responses API path.
Model Routing
- Added catalog fallbacks for OpenAI providers.
- Added catalog fallbacks for Anthropic providers.
SerpApi Tools
- Added eBay search and product skills.
- Tightened the Home Depot flow:
- Direct request handling
- Cache-only behavior
- Storefront URL handling
TTS
- Kokoro local path is now usable in cloud mode.
- Refreshed example voices.
- Removed legacy local TTS environment fallback behavior.
xAI
- Bumped
xai-sdkto1.12.2. - Fixed handling for the
nonereasoning parameter. - Cleaned up minor TTS copy and wording.
Fixes & Polish
Web Chat
- Fixed YouTube embeds.
- Citation markers no longer leak into the UI.
Logging
- Improved provider continuation logging for clearer debugging.
Docs & README
- Cleaned up the root
README. - Updated UI screenshots.
- Added
jarvis-docsREADME coverage for GitHub folder browsing. - Refreshed
jarvis-webREADME. - Refreshed Jarvis Canvas README.
Maintenance
- Updated tests.
v2.49.1
Highlights
Smarter model options
Support for newer OpenAI tiers, including GPT-5.4 mini, plus catalog updates. Improved handling of reasoning and usage details, including cached token reporting on compatible paths.
xAI / Grok
Better chat stability, tool use, caching, conversation affinity, DNS robustness in the SDK, and Grok 4.3-related controls. Also includes refreshed planning and documentation around xAI usage.
Crypto
Multi-coin pricing and built-in crypto charts in market and status flows, including web-friendly and canvas-friendly views.
Memory & Intel
Memory UI
Search by memory IDs, clearer badges, markdown preview for intel, and nicer timestamps and formatting when browsing context.
Reliability
Fixes around forget behavior when using multiple databases, including mirroring and de-duplication. Adds safer bulk forget limits, more consistent cross-database updates, and improved intel ingest reliability.
Web Chat & Conversations
Pin and archive web conversations for easier organization.
Reconnect delivery improvements so messages behave more predictably after connection hiccups.
Docs Experience
Jarvis Docs Assistant and a standalone docs reader at port 5004 with better mobile layout, theming, and link handling.
Documentation now includes clearer retrieval hints for QMD and ripgrep workflows.
Tools & Integrations
Home Depot Search
Added Home Depot search via SerpAPI as a new tool capability.
Tool Discovery
Added tool-search-style workflow support, clearer typo hints for tool RAG, and tighter complementary tools and permissions behavior so discovery and safety align better.
Integration Cleanup
Blinko integration removed.
README and project structure refreshed accordingly.
Brave MCP
Summarizer removed from the Brave MCP stack for a narrower MCP surface.
Reliability & Housekeeping
Anthropic
Accounting and SDK refresh.
Logging
Added routing provenance on LLM logs and prompt-token visibility in logs for easier debugging.
Orchestrator
Completion-guard policy and context/response formatting refactors for clearer separation of concerns.
Reminders
More consistent status handling across voice and status workflows.
Voice / Jarvis Brain
Example tool profiles, local scenarios, and environment/documentation tuning.
Miscellaneous
Workflow, README, and agent updates now point Jarvis workflows at default locations.
v2.49.0
Jarvis v2.49.0
Release date: 2026-04-21
Previous version: v2.48.0
Highlights
v2.49.0 improves tool routing reliability, follow-up context, xAI native-search safety, intelligence auditability, dashboard performance, and Canvas links for headless/LAN setups.
What's New
Tool RAG: cleaner retrieval and better traces
- Tool RAG now embeds a compact current-request signal when possible instead of the whole routing prompt.
- Long learned-strategy, auto-memory, and recent-history blocks no longer dilute tool similarity as much.
TOOL_SIMILARITY_THRESHOLDis used for compact request paths.TOOL_SIMILARITY_THRESHOLD_FULLis used only for truefull_fallback.logs/tool-rag/now records final tools, schema char/token estimates, largest schema contributors, threshold, andsignal_source.
Follow-up extraction moved into a service
- Follow-up extraction was moved from
chat.pyintojarvis-web/server/services/followup_extractor.py. - Compatibility delegates remain in
chat.py. - Added compact follow-up context for
crawl_urlnested results. - Added compact URL history for MCP Brave web/news/local search results.
- Completion Guard now uses this richer follow-up/evidence path.
xAI native search guardrails
- Added optional xAI native/server-side tool budget controls:
XAI_SERVER_SIDE_MAX_TOOL_TURNS=5
XAI_SERVER_SIDE_MAX_SEARCHES_PER_REQUEST=10- These prevent native search/tool loops from multiplying across many Jarvis router turns.
- Native server-side tool usage is retained in metadata for audit/debugging.
Intelligence layer auditability
- Insights now keep stronger provenance:
- source experience ID
- source web conversation ID
- source query
- source tool sequence
- preferred tool sequence
- supporting tools
- reflection provider/model
- reflection token/cost metadata
- Evidence trails make it easier to audit where an insight came from.
- Multi-tool sequences are stored as advisory unless explicitly marked required.
- Secret-like values are redacted before intelligence storage/reflection.
Safer intelligence sync and maintenance
bin/sync-intelligence-db.pypreserves the new provenance/evidence fields.bin/run-intelligence-maintenance.py --dry-runpreviews decay changes before writing.- Jarvis Dashboard TUI exposes the dry-run maintenance option.
Intelligence Dashboard performance
- Experiences and Insights now load in 50-row pages with automatic infinite scroll.
- Sidebar counts/facets use lightweight summary endpoints.
- Sorting and filtering now happen server-side before pagination, so sorting covers the full dataset.
- Raw experience data still loads only when opening a detail modal.
Canvas LAN/public links
- Canvas now separates internal API URL from public clickable URL:
CANVAS_INTERNAL_URL="http://localhost:8890"
CANVAS_PUBLIC_URL="http://192.168.70.228:8890"- Canvas tool responses and memory entries use the public URL.
- Direct
/page_...links now work after auth and select the correct Canvas page. - This fixes headless Jarvis servers accessed from other LAN machines.
Auto-context cleanup
- Auto-context freshness checks now use shared
lib/time_utils.py. - Reduced noisy auto-context instructions that referenced unavailable tools.
Docs Updated
README.mddocs/README.mddocs/TOOL_CALLING_SYSTEM.mddocs/JARVIS_WEB_UI.mddocs/COMPLETION_GUARD.mddocs/INTELLIGENCE_LAYER.mddocs/XAI_PROVIDER.mddocs/CANVAS_SYSTEM.md
Verification
Key checks from this release work:
python -m pytest tests/test_intelligence_maintenance.py tests/test_intelligence_provenance.py tests/test_intelligence_server_side_tools.py
# 21 passed
python -m pytest tests/test_canvas_image_embed.py tests/test_canvas_sources_urls.py tests/test_canvas_direct_links.py
# 13 passed
node --check jarvis-intelligence/client/js/app.js
node --check jarvis-intelligence/client/js/api.js
git diff --checkUpgrade Notes
Optional settings worth reviewing:
TOOL_RAG_TRACE_ENABLED=true
TOOL_SIMILARITY_THRESHOLD=0.23
TOOL_SIMILARITY_THRESHOLD_FULL=0.40
# Optional hard budget for xAI native search/tool loops
# XAI_SERVER_SIDE_MAX_TOOL_TURNS=5
# XAI_SERVER_SIDE_MAX_SEARCHES_PER_REQUEST=10
# For headless/LAN Canvas deployments
CANVAS_INTERNAL_URL="http://localhost:8890"
CANVAS_PUBLIC_URL="http://your-jarvis-host-ip:8890"Restart the web, canvas, and intelligence services after pulling this release.
v2.48.0
Release notes: v2.48.0
Memory & Tool RAG
- Content-hash skip for tool embeddings —
tool_definitionsstoresembedding_input_hash;MemoryDB.upsert_tool()skipsget_embedding()when the definition is unchanged and the hash matches. Reduces redundant API/local work on startup sync and manualsync_toolsruns. ./bin/sync_tools.py cloud|local --force— Regenerates embeddings for every tool (ignores hash). Use after changing embedding model/dimensions or when debugging Tool RAG.- Schema — New databases include the column; existing DBs add it via
ALTER TABLEon open. - Docs —
docs/SYNC_ARCHITECTURE.md,docs/DUAL_DATABASE_SYSTEM.md(tool rows are not copied bysync-memory-db.py),docs/TOOL_RAG_STRATEGY.md,docs/EMBEDDING_HEALTH_CHECKS.md,bin/sync_tools.pyusage header.
Embedding health check
check-embeddings-health.pyprints Embedding Provider as the effective vector backend (openaivsollama), aligned withlib/embeddings.get_embedding()— not the chat LLM brand. When they differ (e.g. xAI chat + OpenAI embeddings), LLM Provider (chat) is shown on a second line.
Auto-memory & routing
- Auto-memory match hints and documentation; example
AUTO_MEMORY_SIMILARITY_THRESHOLD0.45 in docs. - Conversation context and Tool RAG documentation updates; routing tweaks.
Tool RAG retrieval
- Typo hints — User-only token scan and segment matching to improve retrieval when queries don’t exactly match tool text.
Completion Guard
- Effective evidence, native-tool epochs, repair/tighten semantics.
- Yelp search tool and improved completion-guard context.
Search & media
- SerpAPI YouTube search and fallback tools; follow-up field title; embed YouTube in Web UI chat and Canvas.
- Canvas — Tooltip on page names in the gallery.
HTTP & tools
LOCAL_PROXY2proxy chain, tunnel retry, andproxy_usedlogging for HTTP clients usinglib/http_client.py(and tools that rely on it).- Per-bucket API rate limiting; phone_call timeouts hardened.
Spotify
- Honor device on play; episode lookup improvements; cleaner tool-retry speech.
Web UI
- Chat history title tooltips and full stored titles.
Voice & TTS
- TTS emoji cleanup and tool logging improvements.
Response style
- System prompt and response style doc updates;
_format_auto_mode()keeps long complex-tool responses raw only when > 75 words (was a lower threshold).
Config & tests
config/READMEupdates.- Schema tests assert
tool_definitions.embedding_input_hashafter freshMemoryDBinit (tests/test-db-schema-simple.py,tests/test-db-schema.sh).
Upgrade notes
- No manual migration required for the hash column; open any service or run
sync_toolsonce to populate hashes. - After switching embedding provider/model, run
sync_tools.pywith--forcefor the affected mode and re-check./bin/check-embeddings-health.py.
v2.47.0
v2.47.0
This release combines a broader set of install, UI, routing, and safety improvements. The main themes are easier fresh installs, better observability, and more reliable tool and routing behavior.
Highlights
New install.sh flow for fresh clones
-
Added a one-shot install path for new machines.
-
The installer now handles:
- system dependencies
uv- virtual environment setup
- environment file seeding
- setup scripts
- verification
-
Install documentation was rewritten to make
~/jarvis-voiceplus./install.shthe primary setup path. -
OpenCode, n8n, and other integrations are now documented as optional rather than feeling required.
Portable home-path cleanup
- Removed many hardcoded
/home/boss/...assumptions. - Generalized repo, workspace, and home-path handling.
- Environment examples now use
$HOMEwhere appropriate. - Added shared path helpers and tests for portability.
- Improved the systemd install flow so service templates can be rendered for the current user instead of assuming
boss.
Jarvis Web /logs viewer
- Added a dedicated browser-based log viewer in the Web UI.
- Improved log browsing and desktop pane scrolling behavior.
- Makes it much easier to inspect logs without dropping to the shell.
Ollama and local-model improvements
- Added multi-host Ollama URL handling.
- Introduced shared request helpers and better settings labels.
- Hardened Ollama routing and local fresh-install sync behavior.
- Continued cleanup around model catalog fallback and matching.
Tool routing and orchestration improvements
- Added full-prompt Tool RAG threshold support.
- Improved duplicate-tool recovery and prompt context handling.
- Updated prompting for code-related blocks.
- Increased freshness follow-up TTL from 60 seconds to 120 seconds.
- Improved auto-memory injection behavior by lowering the recency factor.
Canvas and content handling fixes
- Hardened canvas image extraction.
- Fixed bare URL normalization in
skills/canvas.pyon save. - Improved Amazon product follow-ups and canvas saves.
- Made turn-context previews valid JSON.
Web UI polish
- Fixed dashboard modal and mobile card layouts.
- Added a copy button for rendered markdown blocks.
- Fixed markdown
~rendering so values like~1 ozno longer appear as strikethrough.
Feedback and intelligence improvements
- Improved the feedback prompt.
- Added feedback search and listing in the Intelligence UI.
- Continued cleanup in related docs and tooling.
Security and tool hardening
execute_bashnow uses stronger path protection logic.- Repo source remains protected.
- Repo
data/is blocked forexecute_bashwrites. - OpenCode workspace protection and service install flow were tightened.
Docs and setup cleanup
A substantial amount of documentation was refreshed in this release, especially around:
- install and startup flow
- service ports and startup commands
- optional OpenCode and n8n setup
- API key references
- portable path assumptions
- testing and operational guides
Versioning
- Bumped version to
v2.47.0
v2.46.0
Highlights
- Completion Guard (Jarvis Web): Added a post-answer completion check with both manual (Yes/No) and automatic modes, a bounded repair pass, optional ticket creation, and clearer AI Config wording. Results now feed the Intelligence experience record, and feedback is recorded against the final settled outcome rather than mid-repair state.
- Scheduled tasks: Added a task runner service and
schedule_task-style scheduling, with service logs underlogs/services/. This workstream also includes updates to the Memory Browser and management UI. - Routing and live data: Added tool-result freshness hints such as timestamps, TTL, and live-vs-memory indicators; suppressed duplicate live tool calls; improved router guidance for refresh vs. historical queries; and removed incorrect “check canvas” claims when canvas was not actually used.
- Weather: Added multi-day daily forecasts via Open-Meteo when a forecast spans multiple days, plus a
daysparameter on the weather tool. - Workflows and Web UI: Workflow tool cards now show actual per-step durations, including per-
for_eachitem timing. Failed steps now surface errors directly on cards. Fixed response payload edge cases soserver_side_toolsand final response shapes behave correctly. - Stock price: When proxy or tunnel errors occur, such as
curl 56,curl 7, orcurl 5, the system now retries once without the proxy to reduce false failures. - Integrations: Improved UniFi Protect webhook recovery. If Jarvis alert creation times out, the system now finds the pending alert and auto-acknowledges it so follow-up reminders do not fire incorrectly.
- OpenAI and costing: Updated the default chat model direction to
gpt-5.4-nano, removedgpt-4ofrom defaults, and refreshed the cost estimator and baseline token tooling for newer SKUs. - Web UX: Added per-session overrides for Q&A word limit, multi-turn limit, and response style. Markdown source links now open in a new tab, matching plain URL behavior.
Maintenance and quality
- Ruff: Completed a first cleanup pass for high-confidence unused imports, reducing
F401issues across several services and skills. - Docs: Refreshed documentation for Completion Guard, feedback, intelligence, metadata, error recovery vs. guard behavior, the root README roadmap (March recap), and related guides.
Upgrade / ops notes
- Review Completion Guard toggles and thresholds in Web AI Config / environment settings. See
docs/COMPLETION_GUARD.md. - If you rely on OpenAI, verify behavior and pricing against the new default model family.
- If you use scheduled tasks, follow
docs/service/README.mdfor the runner setup and logging.
v2.44.0
Ships fixes and features since 2026-02-12: memory and Web UI polish, new tools and workflows, SerpApi search, orchestrator/MCP reliability, and speech/TTS hardening.
Highlights
Memory & routing
- Auto-memory injection tuned: always-include limited to addressing/response-style prefs (with new limit config); topic memories come from semantic search when relevant.
- Filters empty “no preference” style values; router guidance steers real deletes toward
forgetinstead of storing junk prefs. memory_dedupertool: analyze duplicates/conflicts, optional apply with dry run and safety modes.- New workflows:
youtube_ingest,memory_scan.
Web UI
- Clear chat (
POST /api/conversations/<id>/clear) and Import knowledge (.txt/.md, 1MB cap → jarvis-intel). - Bookmark search:
bookmark_searchtool +*shortcut in chat (Firefox-style). - Clickable URLs in tool and message details; chat bubble markdown (lists, bullets, links); canvas page links open in a new tab.
- Layout fix for very wide viewports (~1301px+).
- Workflow tool cards: saved messages now expose tool results in the shape the client expects (including older conversations).
- Log streamer: clearer args/success/error mapping and quicker debugging for canvas-style calls.
New & updated tools
youtube_video,qr_code_generator,git_release_notes,serpapi_search(+ workflow), canvas URL validation (reject truncated URLs; require real links).- Image:
gemini-3.1-flash-image-preview; removed deprecated xAI image model. create_reminder: normalizesa.m./p.m.spellings before parsing.
Search & canvas
- SerpApi: optional conversational → keyword query optimization (
query/query_effective,query_was_optimized,optimize_queryin tool config). - Workflows pass
source_queryinto canvas; smaller payloads to the canvas LLM to avoid truncated “top N” lists.
API, pipeline, and stability
- Rate limiting on the API query path; tool builder parsing fixes and max-tokens support.
- Pipeline steps always carry
errorandspeech; failed workflow steps surface errors in tool cards and persisted history. - Orchestrator: duplicate-tool handling prefers real tool speech and richer nested extraction; avoids reusing JSON-ish text as spoken output.
- MCP client deadlock fixed (non-reentrant lock during init) — fixes hung calls e.g. Brave Search in Docker.
Speech & TTS
- Stronger
sanitize_for_speech()(markdown links, URLs, domains,stash://, IPs, noisy paths) applied to auto WebUI TTS,/api/tts, and CLI--speak.
Models & deps
- Anthropic Sonnet 4.6; Qwen config refresh; Anthropic web search integration version update; repeated yt-dlp bumps via
uv.lock.
Ops & repo hygiene
bin/cleanup-all: web uploads retention (30d), safer disk usage when paths are missing.- Timezone lookup:
"City, State"falls back to city segment when the full string is unknown. - Git: permission/gitignore cleanup; stop tracking
config/price-alerts.yaml(local config pattern).
Configuration notes
- SerpApi: set
SERP_API_KEYif you useserpapi_search. - Memory:
AUTO_MEMORY_ALWAYS_INCLUDE_PREFERENCESwas replaced byAUTO_MEMORY_ALWAYS_INCLUDE_LIMIT(seecloud.env/local.envexamples).
Docs
- Changelog and index updates in
docs/README.md; tool docs underdocs/tools/.
v2.43.0
Installation fixes:
- Fixed pyproject.toml missing deps (flask, flask-socketio, eventlet, psutil, textual, etc.)
- Updated requirements.txt to match pyproject.toml for pip users
- Added tmux to install-system-deps.sh and system-packages.txt
- Fixed setup_tools.sh Python path issue (added lib/ to sys.path)
- Updated minimum required settings section with correct variable names
- Added tools sync step (sync_tools.py) before bin/start in guide
Shell improvements:
- update-aliases.sh now auto-detects bash vs zsh (uses .bashrc or .zshrc)
- bin/jarvis-services --status flag to check actual daemon PIDs
- bin/start --list now checks PID files for services (not just tmux session)
- bin/start --stop now properly stops background daemon
Removed outdated migration plan documentation as the migration is complete.