Skip to content

Changes from V2 to main - #1049

Merged
cloby99 merged 917 commits into
wso2-open-operations:mainfrom
Rashmika998:v2
Jul 6, 2026
Merged

Changes from V2 to main#1049
cloby99 merged 917 commits into
wso2-open-operations:mainfrom
Rashmika998:v2

Conversation

@Rashmika998

Copy link
Copy Markdown
Contributor

No description provided.

Rashmika998 and others added 30 commits June 26, 2026 22:12
…oyment-management

[CSM Portal] Deployment management + deployed-products view
…loyment-type-string-enum

[CSM Portal][BE] feat: accept type string enum in deployment POST/PATCH endpoints
The CR description, justification, and plan fields come from ServiceNow as
rich-text HTML, but the detail page rendered them as plain pre-wrap text, so
the raw markup showed. Sanitize with DOMPurify (allow-list mirroring the case
comment renderer) and render via dangerouslySetInnerHTML; hide sections whose
HTML has no visible content.
…portal

Extract sanitizeRichTextHtml + isBlankHtml into @utils/sanitizeHtml and use it
from both the change-request detail page and the case comment bubble, removing
the duplicated DOMPurify allow-lists.

Align the policy with the customer portal, which renders the same ServiceNow
HTML with bare DOMPurify.sanitize (its INLINE_COMMENT_HTML_PURIFY is {}). The
previous CSM allow-list was stricter and silently dropped legitimate content
(tables, headings); DOMPurify defaults still strip scripts/handlers/js: URLs.
…tml-render

[CSM Portal] Render change-request rich-text fields as sanitized HTML
…d-products/{id} in entity service

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…/deployments/{id}/products/{productId}

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… prevent IDOR

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…serialises as 100.0)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… type

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…to {deploymentId}

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…note

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ma tightening, and Description json.RawMessage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements three call request endpoints wired through the ServiceNow
integration service, with corresponding BFF routes scoped under cases.

Entity service:
- POST /call-requests
- POST /call-requests/search
- PATCH /call-requests/{id}

CSM Portal BFF:
- POST /cases/{id}/call-requests
- POST /cases/{id}/call-requests/search
- PATCH /cases/{id}/call-requests/{callRequestId}

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Maps domain CallRequestStateType strings to SN integer keys server-side,
following the same pattern as deployment type mapping.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…variant

Go ServeMux treats {id} and {caseId} as the same wildcard pattern.
Removed the {id} route and updated the handler to read r.PathValue("caseId").

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…dations

- Rename SearchCallRequestsFilters.StateKeys []int → States []CallRequestStateType;
  translate to SN int keys in the service layer
- Add validateUUIDs for caseId in CreateCallRequest and SearchCallRequests
- Add durationInMinutes > 0 and non-empty utcTimes validation in UpdateCallRequest
- Add CaseID to UpdateCallRequestRequest; BFF injects it via injectCaseIDField;
  SN service does paginated ownership check before applying the patch (IDOR guard)
- Fix SearchCallRequestsPayload pagination default (20) in BFF openapi spec

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…entity service

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- entity-service: requestBody required: false, add 401 to both endpoints
- csm-portal: add 413 to search endpoint, inline pagination defaults, clarify README

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SN returns state.id as a string for time cards; since only the label
is used, removing the id field avoids the unmarshal type mismatch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…called

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…loyed-products-create-update

[CSM] feat: add POST /deployed-products and PATCH /deployed-products/{id} endpoints
…l-requests

[CSM] feat: add call request APIs (POST, search, PATCH) under cases
…ability and call-request changes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
rksk and others added 17 commits July 5, 2026 19:20
Adds an optional productNames filter to the case-search path so callers can
filter cases by product family name (e.g. "API Manager", "Asgardeo").
Additive passthrough to the ServiceNow cases/search scripted API; product
names are matched against product.name (all versions). PG case path unaffected.

- domain.SearchCasesFilters: add ProductNames []string
- snCaseFilters + SearchCases mapping: direct passthrough (no id conversion)
- openapi.yaml: document productNames
- CsmIssuesView: only blank subtitle during initial load (isLoading), not
  every background refetch — isFetching caused the count to flicker on
  filter/search/page changes while stale rows stayed visible
- useGetCsmCases: update stale comment to say blank names not em-dash
- CsmCaseDetailPage: restore em-dash fallback in case header when both
  wso2CaseId and caseNumber are absent

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ns#1042

- Remove unused SemanticChip import (Chip replaced it) — fixes lint/CI
- Restore SemanticChip role={tierColor(tier)} variant="outlined" so each
  tier keeps its distinct semantic colour instead of all rendering primary
- Add type="button" to Box component="button" collapse toggle

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rd cases

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ning

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…a998/csm-portal-web-ux-polish

[CSM][Web] UX polish: case list, chips, internal notes, state dropdown, service request routing
…ct-filter-entity

[CSM Portal] entity-service: add productNames case-search filter
Adds a Product multi-select to the cases filter bar. Options are the distinct
product family names from /products/search (deduped); the selected names are
sent as filters.productNames on /cases/search, which matches every version of
each product. URL param "products"; round-trips via the shared filter URL codec.
Mirrors the customer portal: for cloud-support projects (cloud_support /
cloud_evaluation_support) the case-creation form hides the deployment picker and
files against the project's single primary-production deployment, so the user
goes straight to product selection. Non-cloud projects keep the normal
deployment -> product cascade. The cloud deployment is derived (not synced via
an effect) so downstream product/validation/payload key off it.
…ct-filter-fe

[CSM Portal] cases: product filter + cloud-project case creation
- Add productNames to the useGetCsmCases React Query key so an in-app
  product-only filter change triggers a new search. It was in the request
  payload but not the query key, so React Query served the cached page and
  never refetched when only the product changed.
- Populate the list Product column from the case's product when no deployed
  product is set (e.g. cloud cases like Asgardeo), so product-filtered rows
  are no longer blank; add the product field to BeCaseSearchView.
Drop the separate Work state column and render the work-state chip (only
present for WIP cases) stacked under the state chip in the State column, since
it only ever appears for one state and doesn't warrant its own column.
Rewrite the case filter multi-selects (severity, state, work state, engagement
type, case type) to the same Autocomplete-with-chips control the product filter
uses, replacing the Select + comma-joined-text rendering, so every filter field
shows its selected values consistently as chips with type-to-search.
…ct-filter-fixes

[CSM Portal] cases list: product filter fixes + filter UX refinements
…verlineSlot.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…/feat/support-page-v2

[Customer Portal MicroApp] feat: show recent chats/cases by activity, allow replying to chats
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 454 files, which is 304 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4f898301-66d7-48dd-a29b-f747e9b85bae

📥 Commits

Reviewing files that changed from the base of the PR and between 0e70f86 and 29030f4.

⛔ Files ignored due to path filters (8)
  • apps/csm-portal/backend/go.sum is excluded by !**/*.sum
  • apps/csm-portal/webapp/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • apps/csm-portal/webapp/public/logo-dark.svg is excluded by !**/*.svg
  • apps/csm-portal/webapp/public/logo-white.svg is excluded by !**/*.svg
  • apps/csm-portal/webapp/src/assets/error/error-401.svg is excluded by !**/*.svg
  • apps/csm-portal/webapp/src/assets/error/error-403.svg is excluded by !**/*.svg
  • apps/csm-portal/webapp/src/assets/error/error-404.svg is excluded by !**/*.svg
  • entity-service/go.sum is excluded by !**/*.sum
📒 Files selected for processing (454)
  • .coderabbit.yaml
  • .githooks/pre-push
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/ISSUE_TEMPLATE/improvement_request.yml
  • .github/ISSUE_TEMPLATE/task.yml
  • README.md
  • apps/csm-portal/LICENSE
  • apps/csm-portal/README.md
  • apps/csm-portal/backend/.choreo/component.yaml
  • apps/csm-portal/backend/.env.example
  • apps/csm-portal/backend/.gitignore
  • apps/csm-portal/backend/CLAUDE.md
  • apps/csm-portal/backend/Makefile
  • apps/csm-portal/backend/README.md
  • apps/csm-portal/backend/cmd/server/main.go
  • apps/csm-portal/backend/go.mod
  • apps/csm-portal/backend/internal/apierror/apierror.go
  • apps/csm-portal/backend/internal/entity/client.go
  • apps/csm-portal/backend/internal/entity/client_test.go
  • apps/csm-portal/backend/internal/entity/entity.go
  • apps/csm-portal/backend/internal/handler/accounts.go
  • apps/csm-portal/backend/internal/handler/accounts_test.go
  • apps/csm-portal/backend/internal/handler/cases.go
  • apps/csm-portal/backend/internal/handler/cases_test.go
  • apps/csm-portal/backend/internal/handler/catalogs.go
  • apps/csm-portal/backend/internal/handler/change_requests.go
  • apps/csm-portal/backend/internal/handler/change_requests_test.go
  • apps/csm-portal/backend/internal/handler/configuration_items.go
  • apps/csm-portal/backend/internal/handler/configuration_items_test.go
  • apps/csm-portal/backend/internal/handler/conversations.go
  • apps/csm-portal/backend/internal/handler/conversations_test.go
  • apps/csm-portal/backend/internal/handler/deployments.go
  • apps/csm-portal/backend/internal/handler/deployments_test.go
  • apps/csm-portal/backend/internal/handler/groups.go
  • apps/csm-portal/backend/internal/handler/groups_test.go
  • apps/csm-portal/backend/internal/handler/helpers_test.go
  • apps/csm-portal/backend/internal/handler/product_vulnerabilities.go
  • apps/csm-portal/backend/internal/handler/products.go
  • apps/csm-portal/backend/internal/handler/products_test.go
  • apps/csm-portal/backend/internal/handler/projects.go
  • apps/csm-portal/backend/internal/handler/projects_test.go
  • apps/csm-portal/backend/internal/handler/response.go
  • apps/csm-portal/backend/internal/handler/service_offerings.go
  • apps/csm-portal/backend/internal/handler/service_offerings_test.go
  • apps/csm-portal/backend/internal/handler/services.go
  • apps/csm-portal/backend/internal/handler/services_test.go
  • apps/csm-portal/backend/internal/handler/state.go
  • apps/csm-portal/backend/internal/handler/time_cards.go
  • apps/csm-portal/backend/internal/handler/time_cards_test.go
  • apps/csm-portal/backend/internal/handler/updates.go
  • apps/csm-portal/backend/internal/handler/updates_test.go
  • apps/csm-portal/backend/internal/handler/users.go
  • apps/csm-portal/backend/internal/handler/users_test.go
  • apps/csm-portal/backend/internal/middleware/auth.go
  • apps/csm-portal/backend/internal/middleware/auth_test.go
  • apps/csm-portal/backend/internal/middleware/correlation.go
  • apps/csm-portal/backend/internal/middleware/logger.go
  • apps/csm-portal/backend/internal/middleware/security_headers.go
  • apps/csm-portal/backend/internal/middleware/security_headers_test.go
  • apps/csm-portal/backend/internal/scim/client.go
  • apps/csm-portal/backend/internal/scim/scim.go
  • apps/csm-portal/backend/internal/scim/types.go
  • apps/csm-portal/backend/internal/updates/client.go
  • apps/csm-portal/backend/internal/updates/mapper.go
  • apps/csm-portal/backend/internal/updates/types.go
  • apps/csm-portal/backend/internal/updates/updates.go
  • apps/csm-portal/backend/openapi.yaml
  • apps/csm-portal/webapp/.gitignore
  • apps/csm-portal/webapp/README.md
  • apps/csm-portal/webapp/eslint.config.js
  • apps/csm-portal/webapp/index.html
  • apps/csm-portal/webapp/package.json
  • apps/csm-portal/webapp/playwright.config.ts
  • apps/csm-portal/webapp/pnpm-workspace.yaml
  • apps/csm-portal/webapp/public/config.js.example
  • apps/csm-portal/webapp/src/App.tsx
  • apps/csm-portal/webapp/src/AppWithConfig.tsx
  • apps/csm-portal/webapp/src/api/backend/client.ts
  • apps/csm-portal/webapp/src/api/backend/mappers.test.ts
  • apps/csm-portal/webapp/src/api/backend/mappers.ts
  • apps/csm-portal/webapp/src/api/backend/types.ts
  • apps/csm-portal/webapp/src/api/useDirectoryUsers.ts
  • apps/csm-portal/webapp/src/components/RelativeTime.tsx
  • apps/csm-portal/webapp/src/components/SemanticChip.tsx
  • apps/csm-portal/webapp/src/components/SessionWarningDialog.tsx
  • apps/csm-portal/webapp/src/components/SeverityChip.tsx
  • apps/csm-portal/webapp/src/components/StateChip.tsx
  • apps/csm-portal/webapp/src/components/announcement-banner/HtmlAnnouncementBanner.tsx
  • apps/csm-portal/webapp/src/components/attachments/AttachmentsField.tsx
  • apps/csm-portal/webapp/src/components/attachments/encodeAttachment.ts
  • apps/csm-portal/webapp/src/components/error-banner/ErrorBanner.tsx
  • apps/csm-portal/webapp/src/components/error/AppErrorBoundary.tsx
  • apps/csm-portal/webapp/src/components/error/Error401Page.tsx
  • apps/csm-portal/webapp/src/components/error/Error403Page.tsx
  • apps/csm-portal/webapp/src/components/error/Error404Page.tsx
  • apps/csm-portal/webapp/src/components/error/ErrorPage.tsx
  • apps/csm-portal/webapp/src/components/header/Actions.tsx
  • apps/csm-portal/webapp/src/components/header/Brand.tsx
  • apps/csm-portal/webapp/src/components/header/Header.tsx
  • apps/csm-portal/webapp/src/components/header/ThemeSelect.tsx
  • apps/csm-portal/webapp/src/components/header/UserProfile.tsx
  • apps/csm-portal/webapp/src/components/header/UserProfileModal.tsx
  • apps/csm-portal/webapp/src/components/notification-banner/GlobalNotificationBanner.tsx
  • apps/csm-portal/webapp/src/components/rich-text-editor/Editor.tsx
  • apps/csm-portal/webapp/src/components/rich-text-editor/ImageNode.tsx
  • apps/csm-portal/webapp/src/components/rich-text-editor/ImagesPlugin.tsx
  • apps/csm-portal/webapp/src/components/rich-text-editor/ToolBar.tsx
  • apps/csm-portal/webapp/src/components/rich-text-editor/richTextConstants.ts
  • apps/csm-portal/webapp/src/components/rich-text-editor/richTextEditor.tsx
  • apps/csm-portal/webapp/src/components/rich-text-editor/sanitizeUrl.test.ts
  • apps/csm-portal/webapp/src/components/route-fallback/RouteSuspenseFallback.tsx
  • apps/csm-portal/webapp/src/components/side-nav-bar/CsmSideBar.tsx
  • apps/csm-portal/webapp/src/components/success-banner/SuccessBanner.tsx
  • apps/csm-portal/webapp/src/components/top-banner/TopBanner.tsx
  • apps/csm-portal/webapp/src/config/a11yThemeOverrides.ts
  • apps/csm-portal/webapp/src/config/announcementBannerConfig.ts
  • apps/csm-portal/webapp/src/config/apiConfig.ts
  • apps/csm-portal/webapp/src/config/authConfig.ts
  • apps/csm-portal/webapp/src/config/csmNavItems.ts
  • apps/csm-portal/webapp/src/config/featureFlagsConfig.ts
  • apps/csm-portal/webapp/src/config/loggerConfig.ts
  • apps/csm-portal/webapp/src/config/notificationBannerConfig.ts
  • apps/csm-portal/webapp/src/config/themeConfig.ts
  • apps/csm-portal/webapp/src/constants/apiConstants.ts
  • apps/csm-portal/webapp/src/constants/authConstants.ts
  • apps/csm-portal/webapp/src/constants/common.ts
  • apps/csm-portal/webapp/src/context/current-user/CurrentUserContext.tsx
  • apps/csm-portal/webapp/src/context/error-banner/ErrorBannerContext.tsx
  • apps/csm-portal/webapp/src/context/error-page/ErrorPageContext.tsx
  • apps/csm-portal/webapp/src/context/linear-loader/LoaderContext.tsx
  • apps/csm-portal/webapp/src/context/logger/LoggerContext.tsx
  • apps/csm-portal/webapp/src/context/logger/LoggerProvider.tsx
  • apps/csm-portal/webapp/src/context/success-banner/SuccessBannerContext.tsx
  • apps/csm-portal/webapp/src/context/theme/ThemePreferenceContext.tsx
  • apps/csm-portal/webapp/src/features/csm-accounts/api/useGetAccount.ts
  • apps/csm-portal/webapp/src/features/csm-accounts/api/useSearchAccounts.ts
  • apps/csm-portal/webapp/src/features/csm-accounts/pages/CsmAccountDetailPage.tsx
  • apps/csm-portal/webapp/src/features/csm-accounts/pages/CsmAccountsPage.tsx
  • apps/csm-portal/webapp/src/features/csm-accounts/types/csmAccounts.ts
  • apps/csm-portal/webapp/src/features/csm-admin/pages/CsmAdminLayout.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/api/uploadAttachmentsToCase.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useCsmCaseAttachments.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useCsmCaseCallRequests.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useCsmCaseComments.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useCsmCaseGithubIssue.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useCsmConversationMessages.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useDeployedProductOptions.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useFindMyOngoingCases.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useGetCsmCaseDetail.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useGetCsmCases.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/usePatchCsmCase.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/usePostCsmCase.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useProductNameOptions.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useProjectOptions.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useProjectSearch.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useQuickCaseSearch.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useSearchDeployments.ts
  • apps/csm-portal/webapp/src/features/csm-cases/api/useUserSearch.ts
  • apps/csm-portal/webapp/src/features/csm-cases/components/AssignEngineerDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/AsyncAssigneeMultiSelect.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/AsyncProjectMultiSelect.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/AsyncProjectSelect.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CallRequestRow.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CallRequestsWidget.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CaseActionBar.test.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CaseActionBar.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CaseActivitiesFeed.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CaseDetailWidgets.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CaseMetaBand.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CasesFilterBar.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CasesList.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CreateCallRequestDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CreateGithubIssueDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CsmCaseCommentBubble.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CsmCaseCommentInput.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CsmIssuesView.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/CsmUploadAttachmentModal.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/ProductNameMultiSelect.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/components/UpdateCallRequestDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/pages/CsmCaseCreatePage.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/pages/CsmCaseDetailPage.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/pages/CsmCasesPage.tsx
  • apps/csm-portal/webapp/src/features/csm-cases/types/csmCases.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/assignee.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/callRequestState.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/caseActivityFeed.test.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/caseActivityFeed.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/caseIdentity.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/caseTier.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/caseType.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/caseWorkState.test.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/caseWorkState.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/casesFiltersUrl.test.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/casesFiltersUrl.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/savedFilterViews.test.ts
  • apps/csm-portal/webapp/src/features/csm-cases/utils/savedFilterViews.ts
  • apps/csm-portal/webapp/src/features/csm-coming-soon/pages/CsmComingSoonPage.tsx
  • apps/csm-portal/webapp/src/features/csm-customers/pages/CsmCustomersLayout.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/api/useCaseComposition.ts
  • apps/csm-portal/webapp/src/features/csm-dashboard/api/useCaseCountsMatrix.ts
  • apps/csm-portal/webapp/src/features/csm-dashboard/api/useGetCsmDashboard.ts
  • apps/csm-portal/webapp/src/features/csm-dashboard/api/useGetMyAssignedOpenCases.ts
  • apps/csm-portal/webapp/src/features/csm-dashboard/components/AbtDashboardHeader.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/components/CaseCompositionCharts.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/components/CaseCountsMatrix.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/components/CompositionDonut.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/components/CustomerSummarySection.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/components/MyAssignedCases.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/components/RecentActivitySection.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/components/SectionCard.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/pages/CsmDashboardPage.tsx
  • apps/csm-portal/webapp/src/features/csm-dashboard/types/abtDashboard.ts
  • apps/csm-portal/webapp/src/features/csm-dashboard/utils/abtDashboard.ts
  • apps/csm-portal/webapp/src/features/csm-dashboard/utils/paletteColor.ts
  • apps/csm-portal/webapp/src/features/csm-engagements/pages/CsmEngagementsPage.tsx
  • apps/csm-portal/webapp/src/features/csm-operations/api/useCatalogItemVariables.ts
  • apps/csm-portal/webapp/src/features/csm-operations/api/useGetChangeRequest.ts
  • apps/csm-portal/webapp/src/features/csm-operations/api/usePatchChangeRequest.ts
  • apps/csm-portal/webapp/src/features/csm-operations/api/useSearchCatalogs.ts
  • apps/csm-portal/webapp/src/features/csm-operations/api/useSearchChangeRequests.ts
  • apps/csm-portal/webapp/src/features/csm-operations/components/CatalogVariableFields.tsx
  • apps/csm-portal/webapp/src/features/csm-operations/components/ChangeRequestsFilterBar.tsx
  • apps/csm-portal/webapp/src/features/csm-operations/components/ChangeRequestsTab.tsx
  • apps/csm-portal/webapp/src/features/csm-operations/components/EditChangeRequestDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-operations/components/IssuesListUnavailable.tsx
  • apps/csm-portal/webapp/src/features/csm-operations/pages/CreateServiceRequestPage.tsx
  • apps/csm-portal/webapp/src/features/csm-operations/pages/CsmChangeRequestDetailPage.tsx
  • apps/csm-portal/webapp/src/features/csm-operations/pages/OperationsPage.tsx
  • apps/csm-portal/webapp/src/features/csm-operations/utils/catalogVariables.ts
  • apps/csm-portal/webapp/src/features/csm-operations/utils/changeRequests.ts
  • apps/csm-portal/webapp/src/features/csm-projects/api/useCreateDeployedProduct.ts
  • apps/csm-portal/webapp/src/features/csm-projects/api/useCreateDeployment.ts
  • apps/csm-portal/webapp/src/features/csm-projects/api/useGetProject.ts
  • apps/csm-portal/webapp/src/features/csm-projects/api/useSearchDeployedProducts.ts
  • apps/csm-portal/webapp/src/features/csm-projects/api/useSearchProductVersions.ts
  • apps/csm-portal/webapp/src/features/csm-projects/api/useSearchProducts.ts
  • apps/csm-portal/webapp/src/features/csm-projects/api/useSearchProjects.ts
  • apps/csm-portal/webapp/src/features/csm-projects/api/useUpdateDeployedProduct.ts
  • apps/csm-portal/webapp/src/features/csm-projects/api/useUpdateDeployment.ts
  • apps/csm-portal/webapp/src/features/csm-projects/components/CreateDeployedProductDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/components/CreateDeploymentDialog.test.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/components/CreateDeploymentDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/components/DeployedProductsPanel.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/components/DeploymentDetailsDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/components/DeploymentsTab.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/components/EditDeployedProductDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/components/EditDeploymentDialog.test.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/components/EditDeploymentDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/pages/CsmProjectDetailPage.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/pages/CsmProjectsPage.tsx
  • apps/csm-portal/webapp/src/features/csm-projects/types/csmProjects.ts
  • apps/csm-portal/webapp/src/features/csm-projects/utils/deployments.ts
  • apps/csm-portal/webapp/src/features/csm-projects/utils/subscriptionType.ts
  • apps/csm-portal/webapp/src/features/csm-recent/components/PinThisPageButton.tsx
  • apps/csm-portal/webapp/src/features/csm-recent/components/PinnedTabs.tsx
  • apps/csm-portal/webapp/src/features/csm-recent/components/QuickNav.tsx
  • apps/csm-portal/webapp/src/features/csm-recent/components/RecentViewsButton.tsx
  • apps/csm-portal/webapp/src/features/csm-recent/currentPageEntry.ts
  • apps/csm-portal/webapp/src/features/csm-recent/hooks/useRecentViews.test.ts
  • apps/csm-portal/webapp/src/features/csm-recent/hooks/useRecentViews.ts
  • apps/csm-portal/webapp/src/features/csm-recent/kindMeta.tsx
  • apps/csm-portal/webapp/src/features/csm-security-center/api/useGetProductVulnerability.ts
  • apps/csm-portal/webapp/src/features/csm-security-center/api/useSearchProductVulnerabilities.ts
  • apps/csm-portal/webapp/src/features/csm-security-center/components/ProductVulnerabilitiesTab.tsx
  • apps/csm-portal/webapp/src/features/csm-security-center/pages/CreateSecurityReportPage.tsx
  • apps/csm-portal/webapp/src/features/csm-security-center/pages/CsmSecurityCenterPage.tsx
  • apps/csm-portal/webapp/src/features/csm-security-center/pages/ProductVulnerabilityDetailPage.tsx
  • apps/csm-portal/webapp/src/features/csm-security-center/utils/vulnerabilities.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/api/useTimeCards.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/api/useTimeSheets.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/components/CaseTimeCardsPanel.tsx
  • apps/csm-portal/webapp/src/features/csm-timecards/components/LogTimeCardDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-timecards/components/TimeCardReviewDialog.tsx
  • apps/csm-portal/webapp/src/features/csm-timecards/components/TimeCardStatusChip.tsx
  • apps/csm-portal/webapp/src/features/csm-timecards/components/TimeSheetCard.tsx
  • apps/csm-portal/webapp/src/features/csm-timecards/constants/timeCardConstants.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/hooks/useIsTeamLead.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/hooks/useTimecardRole.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/pages/CsmTimeCardsPage.tsx
  • apps/csm-portal/webapp/src/features/csm-timecards/types/timeCards.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/utils/__tests__/timeCardTotals.test.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/utils/__tests__/timeSheetState.test.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/utils/__tests__/timeSheetWeek.test.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/utils/timeCardTotals.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/utils/timeSheetState.ts
  • apps/csm-portal/webapp/src/features/csm-timecards/utils/timeSheetWeek.ts
  • apps/csm-portal/webapp/src/features/csm-users/api/useSearchUsers.ts
  • apps/csm-portal/webapp/src/features/csm-users/pages/CsmUsersPage.tsx
  • apps/csm-portal/webapp/src/features/csm-users/types/csmUsers.ts
  • apps/csm-portal/webapp/src/features/settings/api/useGetUsersMe.ts
  • apps/csm-portal/webapp/src/features/settings/api/usePatchUsersMe.ts
  • apps/csm-portal/webapp/src/features/updates/api/useGetProductUpdateLevels.ts
  • apps/csm-portal/webapp/src/features/updates/api/usePostUpdateLevelsSearch.ts
  • apps/csm-portal/webapp/src/features/updates/pages/CsmUpdatesPage.tsx
  • apps/csm-portal/webapp/src/features/updates/types/updates.ts
  • apps/csm-portal/webapp/src/features/updates/utils/updateReport.ts
  • apps/csm-portal/webapp/src/features/updates/utils/updateReportPdf.ts
  • apps/csm-portal/webapp/src/hooks/logger.ts
  • apps/csm-portal/webapp/src/hooks/useAuthApiClient.ts
  • apps/csm-portal/webapp/src/hooks/useDebouncedValue.ts
  • apps/csm-portal/webapp/src/hooks/useEngineerDisplayName.ts
  • apps/csm-portal/webapp/src/hooks/useIdTokenClaims.ts
  • apps/csm-portal/webapp/src/hooks/useLogger.ts
  • apps/csm-portal/webapp/src/layouts/AppLayout.tsx
  • apps/csm-portal/webapp/src/layouts/AuthGuard.tsx
  • apps/csm-portal/webapp/src/layouts/ErrorLayout.tsx
  • apps/csm-portal/webapp/src/layouts/postLoginRedirect.tsx
  • apps/csm-portal/webapp/src/main.tsx
  • apps/csm-portal/webapp/src/providers/IdleTimeoutProvider.tsx
  • apps/csm-portal/webapp/src/utils/ApiError.ts
  • apps/csm-portal/webapp/src/utils/contrastText.test.ts
  • apps/csm-portal/webapp/src/utils/contrastText.ts
  • apps/csm-portal/webapp/src/utils/correlationId.test.ts
  • apps/csm-portal/webapp/src/utils/correlationId.ts
  • apps/csm-portal/webapp/src/utils/dateTime.ts
  • apps/csm-portal/webapp/src/utils/formatBytes.test.ts
  • apps/csm-portal/webapp/src/utils/formatBytes.ts
  • apps/csm-portal/webapp/src/utils/renderMarkdown.ts
  • apps/csm-portal/webapp/src/utils/sanitizeHtml.ts
  • apps/csm-portal/webapp/src/utils/userClaims.ts
  • apps/csm-portal/webapp/tests/e2e/README.md
  • apps/csm-portal/webapp/tests/e2e/auth/README.md
  • apps/csm-portal/webapp/tests/e2e/fixtures/test.ts
  • apps/csm-portal/webapp/tests/e2e/pages/LogTimeDialog.ts
  • apps/csm-portal/webapp/tests/e2e/pages/TimeCardsPage.ts
  • apps/csm-portal/webapp/tests/e2e/specs/timecards/approvals.spec.ts
  • apps/csm-portal/webapp/tests/e2e/specs/timecards/case-integration.spec.ts
  • apps/csm-portal/webapp/tests/e2e/specs/timecards/my-sheets.spec.ts
  • apps/csm-portal/webapp/tests/e2e/specs/timecards/role-gating.spec.ts
  • apps/csm-portal/webapp/tests/e2e/storageState/.gitkeep
  • apps/csm-portal/webapp/tests/e2e/tsconfig.json
  • apps/csm-portal/webapp/tests/e2e/utils/selectors.ts
  • apps/csm-portal/webapp/tsconfig.app.json
  • apps/csm-portal/webapp/tsconfig.json
  • apps/csm-portal/webapp/tsconfig.node.json
  • apps/csm-portal/webapp/vite.config.ts
  • apps/customer-portal/microapp/src/components/features/chat/MessageBubble.tsx
  • apps/customer-portal/microapp/src/components/features/dashboard/PieChartWidget.tsx
  • apps/customer-portal/microapp/src/components/features/detail/OverlineSlot.tsx
  • apps/customer-portal/microapp/src/components/features/detail/StickyCommentBar.tsx
  • apps/customer-portal/microapp/src/components/shared/RichText.tsx
  • apps/customer-portal/microapp/src/components/shared/TypewriterText.tsx
  • apps/customer-portal/microapp/src/config/constants.tsx
  • apps/customer-portal/microapp/src/context/me/MeProvider.tsx
  • apps/customer-portal/microapp/src/pages/CaseDetailPage.tsx
  • apps/customer-portal/microapp/src/pages/ChatDetailPage.tsx
  • apps/customer-portal/microapp/src/pages/ChatPage.tsx
  • apps/customer-portal/microapp/src/pages/SupportPage.tsx
  • apps/customer-portal/microapp/src/utils/useDateTime.ts
  • entity-service/.choreo/component.yaml
  • entity-service/.env.example
  • entity-service/.gitignore
  • entity-service/CLAUDE.md
  • entity-service/LICENSE
  • entity-service/Makefile
  • entity-service/README.md
  • entity-service/cmd/api/main.go
  • entity-service/go.mod
  • entity-service/internal/apierror/errors.go
  • entity-service/internal/config/config.go
  • entity-service/internal/db/migrate.go
  • entity-service/internal/db/postgres.go
  • entity-service/internal/domain/entity.go
  • entity-service/internal/handler/account_handler.go
  • entity-service/internal/handler/call_request_handler.go
  • entity-service/internal/handler/case_github_issue_handler.go
  • entity-service/internal/handler/case_handler.go
  • entity-service/internal/handler/catalog_handler.go
  • entity-service/internal/handler/change_request_handler.go
  • entity-service/internal/handler/comment_handler.go
  • entity-service/internal/handler/configuration_item_handler.go
  • entity-service/internal/handler/decode.go
  • entity-service/internal/handler/deployed_product_handler.go
  • entity-service/internal/handler/deployment_handler.go
  • entity-service/internal/handler/group_handler.go
  • entity-service/internal/handler/health_handler.go
  • entity-service/internal/handler/it_service_handler.go
  • entity-service/internal/handler/product_handler.go
  • entity-service/internal/handler/product_version_handler.go
  • entity-service/internal/handler/product_vulnerability_handler.go
  • entity-service/internal/handler/project_handler.go
  • entity-service/internal/handler/service_offering_handler.go
  • entity-service/internal/handler/time_card_handler.go
  • entity-service/internal/handler/user_handler.go
  • entity-service/internal/middleware/correlationid.go
  • entity-service/internal/middleware/logger.go
  • entity-service/internal/middleware/recovery.go
  • entity-service/internal/middleware/timeout.go
  • entity-service/internal/middleware/usertoken.go
  • entity-service/internal/repository/account_repo.go
  • entity-service/internal/repository/case_repo.go
  • entity-service/internal/repository/deployed_product_repo.go
  • entity-service/internal/repository/deployment_repo.go
  • entity-service/internal/repository/product_repo.go
  • entity-service/internal/repository/product_version_repo.go
  • entity-service/internal/repository/project_repo.go
  • entity-service/internal/repository/tx.go
  • entity-service/internal/repository/user_repo.go
  • entity-service/internal/server/routes.go
  • entity-service/internal/server/server.go
  • entity-service/internal/service/account_service.go
  • entity-service/internal/service/case_service.go
  • entity-service/internal/service/deployed_product_service.go
  • entity-service/internal/service/deployment_service.go
  • entity-service/internal/service/interfaces.go
  • entity-service/internal/service/jwt.go
  • entity-service/internal/service/product_service.go
  • entity-service/internal/service/product_version_service.go
  • entity-service/internal/service/project_service.go
  • entity-service/internal/service/sn_account_service.go
  • entity-service/internal/service/sn_call_request_service.go
  • entity-service/internal/service/sn_case_github_issue_service.go
  • entity-service/internal/service/sn_case_github_issue_service_test.go
  • entity-service/internal/service/sn_case_service.go
  • entity-service/internal/service/sn_catalog_service.go
  • entity-service/internal/service/sn_change_request_service.go
  • entity-service/internal/service/sn_comment_service.go
  • entity-service/internal/service/sn_configuration_item_service.go
  • entity-service/internal/service/sn_deployed_product_service.go
  • entity-service/internal/service/sn_deployment_service.go
  • entity-service/internal/service/sn_group_service.go
  • entity-service/internal/service/sn_id.go
  • entity-service/internal/service/sn_it_service_service.go
  • entity-service/internal/service/sn_product_service.go
  • entity-service/internal/service/sn_product_version_service.go
  • entity-service/internal/service/sn_product_vulnerability_service.go
  • entity-service/internal/service/sn_project_service.go
  • entity-service/internal/service/sn_service_offering_service.go
  • entity-service/internal/service/sn_time_card_service.go
  • entity-service/internal/service/sn_user_service.go
  • entity-service/internal/service/user_service.go
  • entity-service/internal/servicenow-integration-service/client.go
  • entity-service/migrations/000001_create_users.down.sql
  • entity-service/migrations/000001_create_users.up.sql
  • entity-service/migrations/000002_create_accounts.down.sql
  • entity-service/migrations/000002_create_accounts.up.sql
  • entity-service/migrations/000003_create_projects.down.sql
  • entity-service/migrations/000003_create_projects.up.sql
  • entity-service/migrations/000004_create_products.down.sql
  • entity-service/migrations/000004_create_products.up.sql
  • entity-service/migrations/000005_create_product_versions.down.sql
  • entity-service/migrations/000005_create_product_versions.up.sql
  • entity-service/migrations/000006_create_deployments.down.sql
  • entity-service/migrations/000006_create_deployments.up.sql
  • entity-service/migrations/000007_create_deployed_products.down.sql
  • entity-service/migrations/000007_create_deployed_products.up.sql
  • entity-service/migrations/000008_create_cases.down.sql
  • entity-service/migrations/000008_create_cases.up.sql
  • entity-service/migrations/000009_create_case_comments.down.sql
  • entity-service/migrations/000009_create_case_comments.up.sql
  • entity-service/openapi.yaml
  • entity-service/queries/entity.sql
  • entity-service/sqlc.yaml

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloby99
cloby99 merged commit 52ba338 into wso2-open-operations:main Jul 6, 2026
1 check passed
rksk added a commit to rksk/os-cs-tools that referenced this pull request Aug 6, 2026
hidden: true was reintroduced in wso2-open-operations#1267 with no recorded rationale, three
weeks after the tab shipped visible in wso2-open-operations#1049/wso2-open-operations#1079. The underlying data
path (useGetCsmCaseSlas -> BFF/entity-service POST /slas/search) works
and is already being fetched on page load; only the tab button was
unreachable.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants