You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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.
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.
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
HelpdeskAdminbehavior must be preserved and is not claimed as delivered here.Required navigation
Within the existing
HelpdeskAdminAdministration tree: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-settingswith@attribute [Authorize(Roles = "HelpdeskAdmin")], aPageTitle, 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
HelpdeskApiand only:GET /api/v1/email-settingsPOST /api/v1/email-settingsPUT /api/v1/email-settings/{id}POST /api/v1/email-settings/testSave 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
HelpdeskAdminonly; 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
/admin/email-settingsreplaces the desktop/mobile app-bar dialog.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.