Changelog

Release history for AVA, newest first. Version numbers are the contract — release dates are omitted by policy. Every release ships with the full automated test suite green (1,400+ tests as of v1.6.3), plus type-check, lint, and production-build gates.

Feature availability and configuration details for the current release are documented in configuration.md and white-label.md; system requirements in requirements.md.


v1.6.3 — Security hardening bundle

A dedicated hardening pass across dependencies, uploads, sockets, and the edge tier.

  • Hardening: dependency floors raised across the stack (Socket.io parser, Next.js, MSAL, image/CSS tooling), with a CI npm audit gate on production dependencies.
  • Hardening: upload pipeline strengthened — request-size pre-check, magic-byte content validation, per-instance disk quota with retention cleanup, and randomized stored filenames; upload budget/quota/retention are now env-tunable.
  • Hardening: WebSocket abuse limits — capped payload sizes and identity-keyed rate limiting on high-frequency signals (typing, presence, close requests).
  • Hardening: container and edge posture — read-only root filesystem with dropped capabilities, log rotation on all services, HSTS, hidden server tokens, and a tighter Content-Security-Policy (no unsafe-eval, narrowed image sources).
  • Hardening: stricter runtime validation — proxy-header trust is opt-in (NGINX_TRUSTED_PROXY), reCAPTCHA fails closed in production, startup checks on secret strength and config-file permissions, and outbound support/feedback/report email addresses must be explicitly configured (SUPPORT_FALLBACK_EMAIL is required — no vendor default).
  • Reduced logging of client personal information (identifiers only in server logs; device hints stripped from URLs).

v1.6.2 — Attachment rendering fix + survey filtering

  • Fixed client-side inline rendering of image attachments (Content-Security-Policy now permits same-document blob URLs for images and media; all other policy directives unchanged).
  • Survey results page: clickable rating-distribution bars filter the response list, and the Rating column is sortable.

v1.6.1 — Field-fix bundle

  • Attachment access corrected for engineers reviewing closed sessions in the archives, and for browsers holding both a client session and an engineer login at once.
  • Upload allowlist extended with zip, txt, csv, and heic (size cap unchanged).
  • Device card layout improved: long identity strings (serial, AV product, IPs, OS, last user) render full-width with no truncation; the context rail widens on large screens.
  • NinjaOne ticket enrichment (configuration-item attach + device UDF) is now gated behind a single explicit switch, NINJAONE_ENRICH_TICKETS (default off), with a documented pre-flight check to run against your own AutoTask instance before enabling.
  • AutoTask client fails fast on schema/validation errors instead of retrying them.

v1.6.0 — NinjaOne device-at-a-glance

  • Read-only device card in the engineer context panel: identity header, stat tiles (last boot, disk, AV, patches, IPs, system, last user), alerts strip, confidence indicator, and an Open-in-NinjaOne deep link.
  • Three-layer device resolution (link hints → AutoTask configuration-item lookup → NinjaOne API cross-check) with a strict never-guess, identity-gated matching policy.
  • Optional best-effort AutoTask ticket enrichment: attach the matched configuration item and record the device UID, with overwrite guards.
  • NinjaOne access is OAuth2 client-credentials, strictly read-only (GET-only client), and fully off when credentials are unset.

v1.5.0 — White-label configuration layer

  • Tenant branding module: all client-facing identity (company name, logo, phone, portal link, tagline, welcome message) is environment-driven — see white-label.md.
  • Business-hours copy and display timezone (DISPLAY_TZ) are configurable and flow through the client page, transcripts, greetings, and billing drafts.
  • AI prompts templated with a configurable company profile, so triage and summaries speak with the deploying MSP's identity.
  • Startup validation requires only the AI provider key matching the configured LLM_FAST/LLM_QUALITY models.
  • Major internal restructuring (socket server, dashboard state, closure flow) for maintainability, plus a rebuilt buyer-facing documentation set.

v1.4.x — Engineer UX overhaul

v1.4.0

  • Transcript redesign: message grouping, day dividers, client-presence liveness header, and optimistic send with delivery acknowledgment and retry — a message is never silently dropped.
  • Ticket closure moved from a modal into an in-rail wrap-up panel with autosaved drafts; sessions spanning midnight now bill correctly.
  • Queue upgrades: live wait timers, urgency aging, density toggle, and a standby screen; command palette (⌘K) and keyboard-shortcut help; archives search.
  • Design-system pass: unified priority and avatar components, consistent type scale, refreshed dark theme, and working dashboard toast notifications.

v1.4.1

  • Ticketless-session recovery: if ticket creation fails at chat start (for example, an unrecognized email domain with no catch-all company configured), the close flow retries full ticket creation, and engineers get an explicit confirm-to-close-without-sync escape hatch.
  • Clear "no ticket" indicators on affected sessions and a gentle nudge on the client form toward business email addresses.

v1.4.2

  • Cleanup release: dead routes, components, and dependencies removed; production image significantly smaller; concurrent-session limit made env-tunable (MAX_ACTIVE_SESSIONS); PII masking in AutoTask lookup logs.

v1.3.x — Dashboard redesign, canned responses, TLS automation

v1.3.0

  • Engineer dashboard redesign: icon rail navigation, secondary panel with live queue search and priority filtering, profile menu (availability, theme, feedback, sign-out), and collapsible client-context sections.
  • Canned responses: team-wide and per-engineer saved replies, a /-triggered picker in the reply box, and a dedicated management page.

v1.3.1

  • Visual refinements to the new rail (brand gradient, compact monogram tile).
  • Server-authoritative chat availability: a public availability endpoint keeps the client page in sync with the server's business-hours gate.

v1.3.2

  • Automated TLS certificate renewal: the bundled certbot service runs a continuous renew loop and nginx gracefully reloads to pick up renewed certificates — WebSocket connections survive the reload. No manual certificate maintenance required.

v1.3.3

  • Hardening: multi-tab safety for live chats, atomic double-submit protection on closure, fail-closed session-ownership checks, and client handshake tokens moved out of URL query strings.
  • Hardening: AutoTask client no longer retries non-idempotent writes after client-side timeouts (prevents duplicate tickets/notes/time entries), and company matching prefers exact/subdomain matches over substrings.
  • Business hours became fully env-configurable (BUSINESS_HOURS_TZ/OPEN/CLOSE/DAYS) with validate-and-fallback, alongside env-configurable AutoTask role IDs.
  • Hardening: survey endpoint authentication, AI input caps, and a timeout on the reCAPTCHA verification call.

v1.2.0 — Provider-agnostic AI layer

  • All AI call sites moved to the Vercel AI SDK behind a single model factory: choose Anthropic, OpenAI, Google Gemini, or OpenRouter per role via LLM_FAST / LLM_QUALITY.
  • Triage uses schema-validated structured output — malformed model responses degrade gracefully to a safe fallback instead of failing the chat.

v1.1.0 — Analytics dashboard

  • New analytics page: chat volume, pickup / first-reply / resolution times (average, median, p90), CSAT, and per-engineer and per-organization leaderboards.
  • Selectable 7-day / 30-day / 90-day / custom date ranges, backed by a query index added for reporting performance.

v1.0.x — Foundation and stabilization series

The initial production line: real-time client chat with queueing, AI triage, AutoTask ticket lifecycle (create, notes, time entries, close), Microsoft Entra ID engineer sign-on, and email fallback. Patch releases v1.0.1–v1.0.12 consolidated it into a stable baseline. Notable items across the series:

  • Hardening: security and stability pass — input validation, rate limiting, and WebSocket flood control (per-socket rate limits, message-size caps, connection caps, status allowlists).
  • AutoTask resilience: automatic retry on transient 5xx responses, note descriptions truncated to the API field limit, and the note-visibility (publish) value made configurable — it is a per-instance AutoTask picklist, never a safe hardcode.
  • Runtime configuration moved fully out of the repository onto the deployment host.
  • Triage prompt tuned so the AI summary reads naturally both on the dashboard and inside the engineer's greeting to the client.

Did this page help you?