⚡ Sparky Chat — Changelog
Current version: v2.23.0
- feat Full Frequent Access catalog — every sidecar entry plus every Mission Control tile (Server Room 124, DGX Spark Monitoring, Sparky Sentinel, Realtime Architecture, Azure Cloud, Backup Management, Knowledge Base · Library, System Prompt, Local Model, Copilot Bridge Connection, Vision Model, Image Generation, DEV Team, Changelog) now appears in the “Add a shortcut” picker, grouped by section.
- feat Add a custom shortcut — new inline form (name + URL) lets you bookmark anything: a local path like
/grafana/d/abc or an external https:// URL. Custom shortcuts live in their own sparky_fa_custom cookie, get a dashed border in the catalog, and have a small × to remove them. Fresh adds auto-promote into Frequent Access when there’s room.
- feat Frequent Access Manager — complete catalog + search. The “Add a shortcut” section now lists every Sparky surface (Sparky Chat, Knowledge Base, Quick Note, CineVault, TorrentLeaf, Home Router, Mata, Voice, Deal Hunter, Expense Tracker, sTerminal, MCP, NightShift, Fix-It Team, Copilot, Mission Control, About, Changelog) regardless of which page you opened the manager from. A search box filters the catalog by label or URL.
- feat Removed the pencil icon next to the “Frequent Access” label — double-click the label to open the manager.
- fix Frequent Access never disappears. After a Reset (or on a fresh browser with 0 saved shortcuts) the section now shows a
+ Add a shortcut pill that opens the manager, instead of hiding entirely and stranding the user.
- fix Manage Frequent Access buttons now respond. The delegated click handler was attached before the modal markup existed in the DOM, so Up / Down / Pin / Remove / Add did nothing (only the inline Reset and Close worked). Listener now waits for DOMContentLoaded and re-attaches on first open.
- feat Manage Frequent Access — double-click the “Frequent Access” label (or the new pencil icon next to it) to open a full-screen manager. Add / remove / reorder / pin your 5 shortcuts, pick from the full sidecar catalog, or Reset all. State stays in the same
sparky_fa cookie, so the welcome row updates instantly.
- feat Pin a Frequent Access icon — long-press (hold > 2s) any FA circle to pin it forever; circle turns light orange to signal it's static. Long-press again to unpin. Pinned items are never evicted by the recents rotation.
- feat Sidecar menu auto-opens when URL contains
?sc=true (also accepts 1, yes, open) — handy for deep-links from other Sparky surfaces
- fix Sidecar menu no longer overlaps the iOS Dynamic Island — now respects
env(safe-area-inset-top) and home-indicator inset
- fix Composer (chatbox) returns to the bottom edge in iOS standalone — restored
body{position:fixed} which is required to fully lock the document; rubber-band scroll was pushing the input area off-screen
- ui UI Consistency Pass — Sparky Chat, Changelog, and About pages now share one canonical <head> (viewport, theme-color, PWA meta, manifest) and one design-token set, identical to Mission Control
- fix Removed JS safe-area magic-number override (47/59px) — status-bar-style switched from
black-translucent to default so iOS handles the inset correctly via pure CSS env(safe-area-inset-top)
- fix Removed
_updateAppHeight() JS hack — relies on CSS 100dvh (iOS 15.4+ / Chrome 108+) which all Home-Screen users have
- fix Removed
body{position:fixed} — eliminates white-flash on in-app navigation in standalone mode
- fix Dropped
interactive-widget=resizes-content from viewport — was racing iOS keyboard resize and causing composer jitter
- feat Added
/manifest.webmanifest — proper PWA install metadata (name, scope, theme color, display:standalone)
- ui Tokens unified:
--accent #7aad2e → #76b900, --text #c9d1d9 → #e6edf3, --text-muted #7d8590 → #8b949e
- docs Foundation for cascading the design system to Mission Control, Mata, File Service, and the rest of the Sparky platform
- feat Real-time GPU utilization indicator in header (36×36 ring gauge beside New Chat)
- feat GPU ring arc animates with cubic-bezier easing; percentage counter tweens smoothly
- ui Indicator auto-shows when local LLM is streaming, fades out when done
- ui Colour thresholds: green (0–59%), yellow (60–84%), red (85–100%)
- feat New
/api/gpu-util endpoint proxies DCGM GPU utilization from Prometheus
- feat Image mode shows creative prompt shortcut buttons (Sunset, Family Home, Pet Portrait, Abstract Art)
- ui Shortcut buttons revert to default text questions when switching back to text mode
- ui New session respects current mode — shows image or text shortcuts accordingly
- ui Image & Attach buttons moved to top of Advanced as icon-only row (42×42, no labels)
- ui Sidecar toggle changed from ⚡ to hamburger (☰) icon in header and menu
- ui Sparky branding (⚡ Sparky) added above version footer in sidecar menu
- ui New Chat button resized to 36×36 for consistent header proportions
- ui Image Generation and Attach Image buttons moved from input pill to Advanced Settings
- ui Input pill simplified: [⚙ Advanced] [textarea] [↑ Send]
- ui Header AI toggle pill hidden — AI switching now only via Advanced options
- fix Unrestricted system prompt now reads from file on each page load (no restart needed after edits)
- feat Unrestricted mode locks to Local-only path — Azure/cloud fallback disabled while active
- feat AI provider toggle greyed out and non-clickable when unrestricted mode is ON
- feat Unrestricted Model toggle — conditional pill shown only when JOSIEFIED model is active on Local
- feat Unrestricted mode: confirms, disables KB, clears memory/session, overrides system prompt from filesystem
- ui Model label moved to Show Routing row (right-aligned) for cleaner Advanced layout
- fix Unrestricted toggle auto-hides when switching to Azure or non-JOSIEFIED model
- ui Advanced button restyled — circular transparent button with gear SVG icon (matches Send button shape)
- feat Mata (eye) button added beside Send — opens real-time camera object detection in new tab
- ui Input pill layout: [⚙ Advanced] [textarea] [👁 Mata] [↑ Send]
- feat Model loading detection — Chat monitors Mission Control model switch progress
- ui Local chip shows "Loading..." and auto-switches to Azure during model switch
- ui Advanced toggle — Temp, Max Tokens, and Show Routing hidden by default behind an "Advanced" button
- ui Show Routing unchecked by default for a cleaner chat experience
- ui Cleaner input area — fewer visible controls for everyday use
- feat Azure OpenAI (GPT-5.2) is now the default LLM — cloud-first for better reasoning quality
- ui Azure chip highlighted on page load; max tokens defaults to 50k
- ui Local NIM remains available via one-click chip switch
- ui Sparky logo click refreshes the page with animated spinner overlay
- feat Gear menu — Upload KB, Search KB, and Mission Control links via header dropdown
- feat Cross-app navigation — Mission Control back button returns to Sparky Chat when accessed from Chat
- ui New Chat button with chat icon replaces New Session
- ui Updated quick-start question labels for clarity
- ui Clean, mobile-friendly header layout — gear icon fits iPhone 16 and up
- feat Copy & Edit buttons on assistant responses — inline with Sources row
- feat Clipboard fallback for non-HTTPS (Tailscale) —
execCommand shim
- ui Routing badges — "KB" / "Direct" labels, stripped vendor prefix from model names
- ui Inline Azure SVG icon in routing badges and header chips
- ui About page — platform description, NVIDIA & Azure logos, powered-by section
- ui Header chips — "Cloud" → "Azure", removed checkmark/cross indicators
- fix Edit button now targets final response only (not reasoning section)
- fix Copy/Edit buttons visible to streaming handler (moved to global scope)
- feat SparkyCL — Chainlit-based alternative chat UI on port 3003
- feat Tailscale Funnel support — expose Sparky Chat to internet via HTTPS
- fix ThreadingHTTPServer — prevents single stuck connection from blocking all requests
- fix Async RAG pipeline — ChromaDB + embeddings no longer block the event loop
- fix Output parser v3 — dash separator detection, sentence-level reasoning removal
- fix Eliminated ChromaDB telemetry log spam (~250 errors/hour)
- ui Fetch timeout with AbortController (120s) — clear timeout vs network error messages
- infra Systemd services for orchestrator and SparkyCL with auto-start on boot
- infra Persistent httpx.AsyncClient with connection pooling for ChromaDB
- feat LangChain Orchestrator backend — replaces TypeScript Nemotron Router
- feat Conversation memory — multi-turn context via session tracking
- feat Intelligent routing — LLM-powered path selection with heuristic fallback
- ui Mobile-responsive layout — fits phone and tablet screens
- ui Version badge moved to bottom-left corner
- ui Removed RAG chip — orchestrator handles RAG automatically
- ui NIM selected by default (local-first)
- infra Backend switched to Sparky Orchestrator on port 4001
- feat Azure + RAG path — cloud LLM with knowledge base context
- ui RAG chip is now clickable — toggle RAG on/off independently
- ui LLM (NIM/Azure) and RAG selections combine into 4 paths
- feat NIM selected by default with RAG on (local-first)
- feat Clickable LLM path selector — NIM (local) / Azure (cloud) chips in header
- ui Active chip highlights green (NIM) or blue (Azure), click again to deselect
- ui Disabled chips for offline services prevent selection
- ui RAG chip shows pipeline status (non-selectable)
- feat Server-side response cleaning — reasoning stripped in router before reaching UI
- fix Handle orphaned <think>/</think> tags, malformed tags, inline reasoning
- feat Separate
reasoning field in API response for reliable toggle
- ui Simplified client-side — just renders clean response + reasoning toggle
- feat Stronger system prompt — mandatory <think> tags, no source refs in answers
- ui Client-side fallback — detects inline reasoning even without <think> tags
- ui Source references ("Source 1", "[Source 2]") stripped from visible answer
- feat Concise system prompt — Sparky gives direct answers, no filler
- ui Reasoning toggle — model thinking hidden behind clickable “Show reasoning”
- feat <think> tag parsing in both NIM and RAG response paths
- feat Local-first LLM prioritization — all paths try NIM before Azure
- ui Local/Cloud indicator badge (⚡ Local LLM / ☁️ Cloud Azure)
- feat Version badge in header with clickable link to changelog
- infra Router returns
is_local boolean in API response
- ui Max tokens toggle button — cycles 1024 → 2048 → 4096
- feat Upgraded embedding model to text-embedding-3-large (3072 dimensions)
- infra Re-ingested knowledge base — 28 chunks from 15 files
- docs Updated architecture-overview.md and sparky-infrastructure.md
- infra Systemd auto-start services for nemotron-router and sparky-chat
- fix Fixed file permissions for knowledge base access (sparky group)
- ui New Session button to clear chat and reset welcome screen
- feat Initial Sparky Chat web UI with dark theme
- feat RAG-powered responses from Gran Family Knowledge Base
- feat Source footnotes with clickable links to knowledge base files
- ui Routing badges — path, model, latency, confidence
- ui Temperature slider and quick-start shortcut buttons
- infra Python HTTP server proxying to Nemotron Router on port 4000
- infra Health check with live status indicator
← Back to Sparky Chat