---
title: "HitKeep 2.14.0: Chart Annotations, Ask AI Chat, and Themes | HitKeep"
description: "HitKeep 2.14.0 adds chart annotations, conversational Ask AI, exact report email previews, dashboard themes, richer tables, and offline-ready startup."
canonical: "https://hitkeep.com/blog/hitkeep-2-14-0/"
---

[← All posts](https://hitkeep.com/blog/)

# HitKeep 2.14.0: Chart Annotations, Ask AI Chat, and Themes

Published October 1, 2026·[Pascale Beier, HitKeep maintainer](https://github.com/pascalebeier)·8 min read

![HitKeep 2.14.0 release artwork showing an annotated traffic chart with an Ask AI chat bubble alongside theme, report email preview, and table symbols](https://hitkeep.com/_astro/hitkeep-2-14-0-hero.0zTRjWKl_Z2bH4ak.webp)

HitKeep 2.14.0 puts context on every chart with annotations, turns Ask AI into a conversation, shows the exact email a report will send, and lets you theme the dashboard. Tables work the same way on every page, and self-hosted instances start without downloading DuckDB extensions.

## Chart annotations: context on every chart

Three months after a traffic spike, nobody remembers whether it was the newsletter, the pricing change, or a bot. Annotations keep that answer on the chart. Mark a release, a campaign, a pricing change, an outage, or a change in how you measure, and every chart for the site shows it: the dashboard traffic chart, Goals, Funnels, Events, Web Vitals, Ecommerce, UTM, QR, AI Agents, and Chatbots.

![HitKeep 30-day traffic chart with a shaded newsletter campaign, pinned notes for a pricing launch, a CDN outage, and a Product Hunt launch, and note chips below the chart](https://hitkeep.com/_astro/analytics-annotations.C5HO0JFV_Z1gLSBS.webp)

A campaign, a pricing launch, an outage, and a launch day explain the traffic curve, on seeded demo analytics.

Adding a note takes one gesture. Click the chart to note a single moment, or drag across it to mark a period: a shaded preview follows the pointer and the note dialog opens with the dates filled in. Single moments appear as pinned lines and periods as shaded bands. A row of buttons under each chart lists the same notes, so keyboard and screen reader users get everything the chart shows.

Owners, admins, and editors can write notes; viewers can read them. Notes stay off public share links, because they often hold internal context such as an outage or a pricing test.

The best notes are the ones nobody has to remember. The annotations API accepts API client tokens, so your deploy pipeline can add a note for every release:

```
curl --fail-with-body -sS -X POST "$ANALYTICS_URL/api/sites/$ANALYTICS_SITE_ID/annotations" \
  -H "Authorization: Bearer $ANALYTICS_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"starts_at\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\", \"body\": \"Deployed v2.14.0\"}"
```

Notes also reach your assistants. [HitKeep MCP](https://hitkeep.com/guides/integrations/mcp/) exposes them read-only as `hitkeep_get_annotations`, and Ask AI reads them when it explains a spike or a drop, treating the text as your team’s context rather than as instructions. Notes are included in site takeout, so the explanation travels with your data.

The [chart annotations guide](https://hitkeep.com/guides/analytics/annotations/) covers when to add a note, the GitHub Actions version of the release step, time handling on day and hour charts, and limits.

## Ask AI becomes a conversation

Ask AI first appeared as an experiment in HitKeep 2.9.0. In 2.14.0 it moves into a drawer built for conversation. Ask what changed in traffic, which pages or referrers stood out, or how events, conversions, ecommerce, Web Vitals, and AI traffic are performing, then keep going: follow-up questions use the current conversation, and **New chat** or a site switch starts over. Answers stream in, show which analytics tools are being read, and can include small charts or tables and safe links back into the dashboard. Ask AI can now also read your [chart annotations](https://hitkeep.com/guides/analytics/annotations/) when it explains a spike or a drop.

Ask AI in 2.14.0 is also better at **why** questions:

- **HitKeep computes the change, the model explains it.** Ask why pageviews rose and HitKeep calculates which referrers, pages, countries, or campaigns drove the change and each one’s share of it, instead of leaving the arithmetic to the model.
- **Every answer starts from real numbers.** Before the model answers, HitKeep reads the site overview and the team’s notes for the period itself.
- **It reads the period you name.** A comparison with last month reads last month, not only the dashboard’s current range.
- **It sees more of your data:** funnels, QR campaigns, imported Search Console data, saved Opportunities, and the official docs for product questions.
- **Sources are the analytics it actually read.** HitKeep lists them itself, so an answer can’t cite a source it never opened.

![Ask AI drawer explaining why a demo site's pageviews rose month over month, naming the referrer that drove the change, with a biggest-movers table, its sources, and a dashboard action](https://hitkeep.com/_astro/feature-ask-ai-answer.D3DFJ_CY_Z1BEINg.webp)

Ask AI explains a month-over-month rise on seeded demo analytics.

Ask AI follows an explicit date range on the current dashboard route. Without one, the server derives context from the site’s observed data bounds and applies its analytics range limit. It uses the same analytics procedures published for external assistants and the same read-only tools as [HitKeep MCP](https://hitkeep.com/guides/integrations/mcp/), bound to your dashboard session; MCP remains the separate route for an AI agent you already use.

MCP gets the same improvements. The server now tells a connecting assistant how to use its tools, offers the HitKeep analytics procedures as prompts, and adds `hitkeep_get_breakdown` for breakdowns and change drivers. The site overview behind the dashboard, MCP, and Ask AI also got faster: HitKeep now classifies each browser and AI agent once instead of once per hit, which took the overview from about ten seconds to under one on a benchmark site with 200,000 monthly hits.

Which model you choose matters. HitKeep tests models against questions with known answers; see [choosing a model](https://hitkeep.com/guides/analytics/ask-ai/#choosing-a-model) for the current results.

The drawer is a temporary conversation, not a saved chat archive. HitKeep stores safe audit metadata such as status, usage, and tool names without persisting raw prompts, full model responses, credentials, or unrestricted tool payloads. Ask AI stays optional: on a self-hosted instance, an operator configures an AI provider and enables it. See the [Ask AI guide](https://hitkeep.com/guides/analytics/ask-ai/) for setup, availability states, limits, and the data boundary.

## Report emails: preview exactly what recipients get

Scheduled reports arrived in 2.13.0. In 2.14.0 the report editor’s last step shows the real email instead of a summary: the same rendering the scheduler sends, with the sender, recipients, subject line, preview text, and the next delivery time. Switch between the email and its plain-text version, desktop and mobile widths, and light and dark mode. When a report has external recipients, you can also preview the self-contained version they receive. The preview refreshes shortly after you stop editing.

![HitKeep report editor preview step showing the envelope with sender, recipients, subject, and arrival time above the rendered daily report email](https://hitkeep.com/_astro/feature-report-email-preview.DI0R4RUM_1XaOO3.webp)

The preview step renders the exact email, here a daily site summary on seeded demo analytics.

The emails themselves were redesigned:

- **Dark mode** now keeps every text and button readable, including in Outlook.com.
- **Mobile** layouts use tighter spacing and smaller figures so KPI tables fit narrow screens.
- **Accessibility:** the email language follows the recipient’s locale, and link colors meet contrast requirements.
- **Privacy:** opening a report email makes no network request. The emails use a system font stack instead of loading a web font, and the HitKeep icon is embedded in the message rather than fetched.
- Every email carries a short preview line for inbox lists.

## Make the dashboard your own

The new theme dialog offers HitKeep, Teal, Rose, Amber, and Blue starting themes. Choose automatic, light, or dark appearance, then preview changes before saving a theme. You can adjust primary, surface, and accent colors; font family and base size; overall density; and sidebar spacing. An advanced custom CSS field is available for further changes. Chart colors follow the active theme.

![HitKeep Appearance dialog with theme presets, appearance mode, primary, surface, and accent colors, font settings, density, menu spacing, and custom CSS](https://hitkeep.com/_astro/feature-theme-dialog.BMTo4fLP_7ppW1.webp)

The Appearance dialog with the Teal preset selected.

Custom themes and the selected theme are saved in your browser. They are local preferences rather than team settings or account-synced themes, so each browser keeps its own choices. You can delete a custom theme or return to the HitKeep defaults.

The theme manager is a community contribution: thank you, [Nacho (@gnacho)](https://github.com/gnacho), for building it in [#358](https://github.com/PascaleBeier/hitkeep/pull/358).

## Tables that work the same everywhere

Every dashboard table now uses one shared component, so the same controls appear wherever you read rows: search, typed column filters with removable chips, grouping, resizable columns, a column picker, sticky identity and action columns, totals where they apply, and CSV export. Each table remembers which columns you show and how you group rows, in your browser.

![HitKeep Latest Hits table with search, Group by and Columns controls, sortable headers, and pagination](https://hitkeep.com/_astro/feature-shared-table.DoDuTQXV_Z1fSDeG.webp)

The Latest Hits table with search, grouping, and column controls.

## Smoother startup and localization

HitKeep now bundles the DuckDB extensions needed at startup, so a self-hosted instance can start without downloading those extensions at runtime. This improves operation in offline and restricted-network environments without adding a database service, and fixes S3 backups that failed when an extension could not be downloaded ([#353](https://github.com/PascaleBeier/hitkeep/issues/353); thanks to [@hslabbert](https://github.com/hslabbert) for reporting it). Spanish dashboard translations have also been completed and aligned across the interface.

Homebrew installs are now verified on both macOS and Linux for every release, and the release is built with Go 1.27.1 and Angular 22.2.

## Explicit configuration files

Self-hosted operators can now generate a commented YAML example with `hitkeep config init --output ./hitkeep.yaml` and check it with `hitkeep config validate --config ./hitkeep.yaml`. Start with `hitkeep --config ./hitkeep.yaml` to use it. File selection is explicit; existing flag and environment deployments keep their behavior, and changed flags and environment variables take precedence over file values. The [configuration reference](https://hitkeep.com/reference/configuration/) explains the file format and downgrade considerations.

## Before upgrading

Ask AI needs an explicitly configured provider and feature flag on self-hosted deployments. Review the [AI model configuration guide](https://hitkeep.com/guides/admin/ai-model-configuration/) and the [runtime configuration reference](https://hitkeep.com/reference/configuration/) before enabling it. Theme choices are browser-local; they do not migrate through account or team settings.

The [2.14.0 release notes](https://github.com/PascaleBeier/hitkeep/releases/tag/v2.14.0) list every change and the release artifacts.

Managed option

## Run HitKeep without the ops burden.

HitKeep Cloud runs the same single binary in region-pinned EU or US infrastructure, with managed updates and backups.

[Start free in HitKeep Cloud](https://cloud.hitkeep.eu/signup?utm_source=hitkeep_docs&utm_medium=website&utm_campaign=cloud_signup&utm_content=content_cta&plan=free&billing=monthly)[Self-host instead](https://hitkeep.com/guides/installation/)

[← OlderHow to Build Better Google Reporting for Stakeholders](https://hitkeep.com/blog/how-to-build-better-google-reporting-for-stakeholders/)
