Skip to content

Port read-only intent support from Lite to Dashboard#728

Merged
erikdarlingdata merged 1 commit intodevfrom
feature/dashboard-readonly-intent
Mar 27, 2026
Merged

Port read-only intent support from Lite to Dashboard#728
erikdarlingdata merged 1 commit intodevfrom
feature/dashboard-readonly-intent

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

Summary

  • Adds per-server ReadOnlyIntent checkbox to the Add/Edit Server dialog, matching the existing Lite implementation
  • Sets ApplicationIntent=ReadOnly on connection strings for AG listener routing to readable secondaries
  • All user-visible surfaces differentiate read-only connections: tab headers show "(RO)", sidebar/NOC show "(Read-Only)", tray notifications, alert history, MCP tools tag with [Read-Only]
  • 10 files across model, services, UI, and MCP layers

This was already implemented and tested in Lite (used against Azure SQL readable replicas). Dashboard port follows identical patterns.

Test plan

  • Add Server dialog shows "Read-only intent" checkbox in Connection Options
  • Edit Server dialog loads existing ReadOnlyIntent state
  • Server sidebar shows "(Read-Only)" suffix when enabled
  • Tab headers show "(RO)" suffix
  • Alert history records server name with "(Read-Only)" suffix
  • MCP list_servers output includes [Read-Only] tag
  • Connections to AG listener readable secondaries route correctly (requires AG environment)

🤖 Generated with Claude Code

Adds per-server ReadOnlyIntent checkbox to the Dashboard, matching the
existing Lite implementation. Required for AG listeners and readable
secondary replicas.

- ServerConnection: ReadOnlyIntent property, DisplayNameWithIntent,
  ApplicationIntent applied in MFA + standard connection paths
- DatabaseService: readOnlyIntent parameter in BuildConnectionString
- AddServerDialog: checkbox with tooltip, loaded/saved in edit + new
- Tab headers show "(RO)" suffix for read-only connections
- All user-visible display (tray notifications, alert recording,
  dialog messages, HideAllAlerts) uses DisplayNameWithIntent
- ServerListItem/ServerHealthStatus bindings resolve through
  DisplayNameWithIntent for sidebar and NOC views
- MCP discovery and server resolver tag with [Read-Only]

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 6e5b6c2 into dev Mar 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant