fix: iterative QA pass — resolve remaining bugs, UX and accessibility improvements

Three QA iterations to convergence (zero issues remaining):

Workbench UI:
- Connection badge: amber "Connected (no auth)" for unauthenticated state
- Theme persistence: restore script in index.html + localStorage sync
- Settings About section: add bottom padding so content isn't clipped
- Clear messages: cancel in-flight requests when clearing chat
- Feature switch labels: proper casing + acronym handling (MCP, LLM)
- Token Cost badge: hidden during loading state
- ARIA: role="switch", aria-checked on toggles, aria-labels on buttons
- ConfigApi: null-safe chaining for getPrompts/getSystemPrompt

Grafana dashboards:
- Auto-refresh 30s on all 3 dashboards
- Panel heights reduced to fit viewport without scrolling
- Anonymous role upgraded to Editor for Explore access

Infrastructure:
- Nginx: DNS resolver with variable-based upstream (prevents crash loop)
- Workbench port set to 3002 in .env

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
elpresidank 2026-04-07 06:33:22 -05:00
parent 3a80872482
commit 9ef9ef854f
11 changed files with 102 additions and 33 deletions

View file

@ -175,7 +175,7 @@ services:
environment:
- GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD:-admin}
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
- GF_AUTH_ANONYMOUS_ORG_ROLE=Editor
- GF_AUTH_DISABLE_LOGIN_FORM=false
- GF_USERS_DEFAULT_THEME=dark
- GF_EXPLORE_ENABLED=true

View file

@ -28,7 +28,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 },
"gridPos": { "h": 7, "w": 12, "x": 0, "y": 0 },
"id": 1,
"targets": [
{
@ -92,7 +92,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 },
"gridPos": { "h": 7, "w": 12, "x": 12, "y": 0 },
"id": 2,
"targets": [
{
@ -162,7 +162,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 },
"gridPos": { "h": 7, "w": 12, "x": 0, "y": 7 },
"id": 3,
"targets": [
{
@ -230,7 +230,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 },
"gridPos": { "h": 7, "w": 12, "x": 12, "y": 7 },
"id": 4,
"targets": [
{
@ -305,6 +305,7 @@
"templating": {
"list": []
},
"refresh": "30s",
"time": {
"from": "now-1h",
"to": "now"

View file

@ -28,7 +28,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 6, "w": 24, "x": 0, "y": 0 },
"gridPos": { "h": 4, "w": 24, "x": 0, "y": 0 },
"id": 1,
"targets": [
{
@ -74,7 +74,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 6 },
"gridPos": { "h": 6, "w": 12, "x": 0, "y": 4 },
"id": 2,
"targets": [
{
@ -131,7 +131,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 6 },
"gridPos": { "h": 6, "w": 12, "x": 12, "y": 4 },
"id": 3,
"targets": [
{
@ -195,7 +195,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 24, "x": 0, "y": 14 },
"gridPos": { "h": 6, "w": 24, "x": 0, "y": 10 },
"id": 4,
"targets": [
{
@ -263,6 +263,7 @@
"templating": {
"list": []
},
"refresh": "30s",
"time": {
"from": "now-1h",
"to": "now"

View file

@ -28,7 +28,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 },
"gridPos": { "h": 6, "w": 12, "x": 0, "y": 0 },
"id": 1,
"targets": [
{
@ -92,7 +92,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 },
"gridPos": { "h": 6, "w": 12, "x": 12, "y": 0 },
"id": 2,
"targets": [
{
@ -151,7 +151,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 },
"gridPos": { "h": 6, "w": 12, "x": 0, "y": 6 },
"id": 3,
"targets": [
{
@ -210,7 +210,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 },
"gridPos": { "h": 6, "w": 12, "x": 12, "y": 6 },
"id": 4,
"targets": [
{
@ -269,7 +269,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 16 },
"gridPos": { "h": 6, "w": 12, "x": 0, "y": 12 },
"id": 5,
"targets": [
{
@ -328,7 +328,7 @@
"type": "prometheus",
"uid": "tg-prometheus"
},
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 },
"gridPos": { "h": 6, "w": 12, "x": 12, "y": 12 },
"id": 6,
"targets": [
{
@ -392,6 +392,7 @@
"templating": {
"list": []
},
"refresh": "30s",
"time": {
"from": "now-1h",
"to": "now"