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
Today the Chats page is buried as the 5th tab inside Configuration/Settings (Views/Configuration/Index.cshtml:30-32, 65-67), reachable only via the Settings cog. Users and Access keys already have their own top-level entries in the Configuration dropdown, and Chats is the same kind of CRUD page — it belongs next to them, above the divider. Settings (server config) and API (docs) stay below the divider.
After PR #1272 (EditChat tabs refactor) shipped, this is the next UX cleanup of the unified-Chat surface that came out of epic #1259.
Goals / Proposed scope
Add a new top-level Chats entry in the Configuration dropdown (Views/Shared/_Layout.cshtml), placed immediately after Users.
Host the page at NotificationsController.Index — controller already has ChatsManager wired (Controllers/NotificationsController.cs:28-38).
Remove the Chats tab from Configuration/Settings; keep _Chats.cshtml in place (still used by Folders/EditFolder.cshtml:59).
Insert Chats <li> in _Layout.cshtml after the Users block (:107-114), gated by IsChatsPageAllowed, linking to Url.Action(ViewConstants.IndexAction, ViewConstants.NotificationsController).
Remove chats-tab button + pane from Views/Configuration/Index.cshtml:30-32, 65-67.
Drop Chats property from ConfigurationViewModel (Model/Configuration/ConfigurationViewModel.cs:18) and the IChatsManager chats primary-constructor param + ConfigurationController.Index call site (:30).
Update NotificationsController.AddChat POST redirect (:81) from ConfigurationController.Index → nameof(Index) so the user lands back on the new Chats page.
Update Playwright tests in src/tests/Autotests/products/modify_folder_chat.spec.ts — all three tests navigate via Configuration → tab Chats; switch to Configuration dropdown → Chats.
Context
Today the Chats page is buried as the 5th tab inside Configuration/Settings (
Views/Configuration/Index.cshtml:30-32, 65-67), reachable only via the Settings cog. Users and Access keys already have their own top-level entries in the Configuration dropdown, and Chats is the same kind of CRUD page — it belongs next to them, above the divider. Settings (server config) and API (docs) stay below the divider.After PR #1272 (EditChat tabs refactor) shipped, this is the next UX cleanup of the unified-Chat surface that came out of epic #1259.
Goals / Proposed scope
Views/Shared/_Layout.cshtml), placed immediately after Users.NotificationsController.Index— controller already hasChatsManagerwired (Controllers/NotificationsController.cs:28-38)._Chats.cshtmlin place (still used byFolders/EditFolder.cshtml:59).Tasks
NotificationsController.Index([HttpGet],[AuthorizeIsAdmin]) returningView(new ChatsSettingsViewModel(ChatsManager)).Views/Notifications/Index.cshtml— minimal wrapper that renders@await Html.PartialAsync("~/Views/Configuration/_Chats.cshtml", Model).UserRoleHelper.IsChatsPageAllowed(Helpers/UserRoleHelper.cs) returninguser.IsAdmin, mirroringIsUsersPageAllowed:13-16/IsConfigurationPageAllowed:33-36.<li>in_Layout.cshtmlafter the Users block (:107-114), gated byIsChatsPageAllowed, linking toUrl.Action(ViewConstants.IndexAction, ViewConstants.NotificationsController).Views/Configuration/Index.cshtml:30-32, 65-67.Chatsproperty fromConfigurationViewModel(Model/Configuration/ConfigurationViewModel.cs:18) and theIChatsManager chatsprimary-constructor param +ConfigurationController.Indexcall site (:30).NotificationsController.AddChatPOST redirect (:81) fromConfigurationController.Index→nameof(Index)so the user lands back on the new Chats page.src/tests/Autotests/products/modify_folder_chat.spec.ts— all three tests navigate via Configuration → tab Chats; switch to Configuration dropdown → Chats.Acceptance criteria
/Notificationsand renders the existing chats table (same columns, same row action dropdown, same Add-new-chat link)./Configuration) no longer has a Chats tab./Notifications, not/Configuration._Chats.cshtml).dotnet build src/server/HSMServer/HSMServer.csproj— 0 errors.npx playwright test modify_folder_chat.spec.ts— green after selector updates.Out of scope
_Chats.cshtml— leave underViews/Configuration/to avoid churningFolders/EditFolder.cshtml.IsChatsPageAllowedmirrors the existing admin-only pattern; no new roles.References
src/server/HSMServer/Views/Configuration/Index.cshtml:30-32, 65-67— current chats-tab markup to removesrc/server/HSMServer/Views/Configuration/_Chats.cshtml— partial reused by new pagesrc/server/HSMServer/Views/Shared/_Layout.cshtml:97-130— Configuration dropdownsrc/server/HSMServer/Controllers/NotificationsController.cs:28-38, 81— controller + redirectsrc/server/HSMServer/Controllers/ConfigurationController.cs:23, 30— DI + Index call site to trimsrc/server/HSMServer/Model/Configuration/ConfigurationViewModel.cs:10, 18— model to trimsrc/server/HSMServer/Helpers/UserRoleHelper.cs:13-16, 33-36— pattern for new helper