# Dashboard threshold styles and Retry on failed loads

> Dashboard panels get a base color and threshold styles, alert links open the Alert Monitor, and lists and charts show Retry when a load fails.

Source: https://last9.io/changelog/dashboard-threshold-styles-and-retry-on-failed-loads/

### Improvements

- **AI Assistant**
  - Added a **Copy** button that copies the whole conversation, including in shared read-only chats.
  - When a reply ends with a count such as "(+ 20 more rules)", select it to list the remaining items inline.
- **Dashboards**
  - Added a base color for values below the first threshold, and **Transparent** as a threshold color, on stat, gauge, time series, and bar panels. The first chip in **Thresholds** is the base, so "red below 95" is a red base with a transparent step at 95.
  - Added a **Show thresholds as** select to time series and bar panels, with **Line**, **Line (dashed)**, **Area**, **Area + line**, and **Area + line (dashed)**. Panels keep **Area** until you change it, and the select appears once the panel has a threshold.
  - Added **Color data instead** to **Show thresholds as**. It colors lines, areas, or bars by the threshold range each value falls in, and it is disabled on stacked bars.
  - Imported Grafana panels keep their base color, threshold style, and color mode. See [Using dashboards](/docs/using-dashboards/).
- **Alerting**
  - Alert notification links in Slack, PagerDuty, email, and the other channels open the Alert Monitor with that alert's modal, instead of the old page. Metric alerts get the new link in every new notification. A log alert gets it once its rule is created or saved; older log rules keep their old link.
  - **Alert Monitor**: When a refresh fails, the alerts on screen stay visible under an **Alerts may be out of date** banner with a **Retry** button.
- **Control Plane**: Creating a rehydration for a range that existing indexes already cover shows **Range Already Requested** with each index's name, range, and query link, and the form stays open. A partial overlap shows **Overlapping Range** with the same details. Rehydration also reads cold storage from Google Cloud Storage buckets.
- **MCP**
  - New tools let an agent acknowledge or reassign an alert, mute an alert group, validate an alert expression, and create, attach, detach, and delete notification channels. `create_alert` and `create_alert_from_chart` create rules disabled, so you review them before they fire.
  - The new `get_log_patterns` and `get_emerging_log_patterns` tools find recurring log patterns and the patterns that appeared or grew between two windows. `patch_dashboard` edits a dashboard with targeted operations and returns a diff.
  - The `--read-only` and `--allow-write-tools` flags control which tools the server offers: in read-only mode, only tools that do not change data are served.
  - `get_logs` and `get_service_logs` return a summary of the matching lines by default; pass `response_mode` to get raw lines.
  - Every tool call stops after 3 minutes, and a log search stops after 90 seconds with advice on how to narrow it.
- **General**
  - Failed requests show an error with a **Retry** button instead of an empty state. Charts say **This chart did not load.**, and the Traces, Hosts, Exceptions, Kubernetes, Alert Monitor, and Alert Rules lists say, for example, **Hosts did not load.**
  - Added a **Clear Filters** button to the empty state of the Alert Monitor, Alert Rules, Exceptions, Hosts, and Kubernetes lists when filters hide every row.

### Fixes

- **Alerting > Alert Monitor**: A request for alerts at a time a minute or two before now reported every rule as normal, because evaluations land about two minutes late. MCP `get_alerts` and the AI Assistant hit this when they fixed "now" and sent the request seconds later. A short window ending at now, such as the last hour, returned no alerts.
- **Control Plane > Streaming Aggregation**: Opening the edit dialog of an aggregation created through the API crashed the page when a regexp `parse` stage had no labels. The rules kept running. The API now rejects a log or trace aggregation whose regexp `parse` stage has no labels.
