Skip to content

UX: consolidate Email Settings and Automation administration #58

Description

@Proxicon

UX: consolidate Email Settings and Automation administration

Baseline and scope

Baseline: 23fdf65395219472df1024a3d2f61687347262e8 (main, PR #57 merged). Preserve the theme-first-paint work from #55 and the role/Team work from #57. This issue changes administration navigation and makes the existing mailbox editor routable; it does not add administration capabilities or change email, automation, orchestration, catalogue, or webhook engines.

The separate #57 follow-up for tenant-scoped Customers and tenant SLA panels remains outside this issue. Their current HelpdeskAdmin behavior must be preserved and is not claimed as delivered here.

Required navigation

Within the existing HelpdeskAdmin Administration tree:

Administration
├── Accounts & Orgs (existing contents/access)
├── Roles & Permissions
├── Email Settings
│   ├── Mailbox Configuration — /admin/email-settings
│   ├── Pending Emails — /admin/pending-emails
│   ├── Email Rules — /admin/email-rules
│   ├── Email Templates — /admin/templates
│   └── Email Layouts — /admin/layouts
├── Automation
│   ├── Orchestrator — /settings/connectivity (including its legacy alias)
│   ├── Automation Rules — /admin/automation
│   ├── Service Explorer — /admin/requests/services (including /admin/requests/services/{ServiceId})
│   └── Webhooks — /admin/ai-assistant-webhooks
├── Ticket Categories
└── Branding & Identity

Operations remains SLA Ops, Workflow Ops, and Hangfire Ops only. Remove, rather than duplicate, the old Connectivity/Pending Emails Operations placements, standalone Automation Rules/Service Explorer/Webhooks placements, and the Email Design group. Remove Email Settings from both desktop and mobile app-bar menus. Preserve existing role gates, link semantics, keyboard/focus behavior, mobile drawer behavior, route templates, query strings, and detail links.

Mailbox Configuration page

Create an instance-admin-only page at /admin/email-settings with @attribute [Authorize(Roles = "HelpdeskAdmin")], a PageTitle, real h1, normal content surface, responsive two-column/stacking sections, and no dialog dependency. Move the existing form and API behavior into one implementation, then remove the obsolete dialog and callback.

Preserve mailbox enabled, background ingestion enabled, host, port, SSL, mailbox address/folder, provider tenant ID, client ID, client secret, stored-secret status, ordered first-record load, and single-record update behavior. Use HelpdeskApi and only:

  • GET /api/v1/email-settings
  • POST /api/v1/email-settings
  • PUT /api/v1/email-settings/{id}
  • POST /api/v1/email-settings/test

Save must stay on the page, retain failed drafts, consume the response ID after a first create, refresh the saved baseline/normalization/secret status, and clear replacement secret input. Test Connection must use the current draft without persisting, enabling ingestion, or replacing a stored secret. Blank replacement secret retains an existing secret. Discard restores the loaded/saved baseline and clears secret/test feedback. Load failures show Retry and prevent mutations. Guard loading/save/test against concurrency and invalidate old test feedback when connection fields change.

Track dirty state and guard internal, Back/Forward, and browser unload/external navigation with supported navigation-lock behavior; clean/successfully saved pages do not prompt. Never put credentials in storage, URL, SSR state, logs, screenshots, issues, PRs, or test artifacts.

Access and usability

All moved/new pages remain HelpdeskAdmin only; tenant admins and ordinary users receive neither navigation nor successful direct/API access. Existing tenant administration navigation/role editing remains unchanged. Deep links, refreshes, location changes, Service Explorer detail paths, and the legacy Orchestrator path must expand/activate the correct ancestor and leaf using path-segment-aware matching without making groups permanently open. Orchestrator's browser title and visible heading become “Orchestrator”, retaining a short connectivity/validation subtitle.

Acceptance checklist

  • Email Design is renamed to Email Settings with the agreed five child pages.
  • Standalone /admin/email-settings replaces the desktop/mobile app-bar dialog.
  • Existing mailbox fields, first-record behavior, save/test/secret handling, dirty/discard handling, and empty/error states are preserved.
  • Pending Emails is moved from Operations into Email Settings without automatic retry behavior.
  • Automation contains Orchestrator, Automation Rules, Service Explorer, and Webhooks exactly once.
  • Existing URLs, aliases, query strings, and Service Explorer detail links remain compatible.
  • Deep links, browser navigation, expansion/collapse, desktop/mobile drawer behavior, and accessibility are covered.
  • Instance-only authorization remains intact; tenant administration is unchanged.
  • Replace old dialog source-string coverage with behavioral component/integration/browser coverage, including denied access and API-secret regressions.
  • Run relevant .NET, UX, publish/smoke, and policy checks; record exact results and sanitized synthetic screenshots.

Exclusions

No Automation landing page, generic settings framework, profile/preferences placeholders, dependency upgrade, backend authorization expansion, engine changes, release, image publication, deployment, or merge. #55 and #57 are preserved predecessors, not closed by this work.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions