Update Release-3.7 with latest #2370
Merged
c-julin merged 50 commits intorelease-3.7from Apr 8, 2026
Merged
Conversation
…me-rerendering Fixes estimated time rendering
Most Kafka (kerr.*) and Schema Registry errors were mapped to CodeInternal (HTTP 500) regardless of the actual error semantics. This caused API clients to receive misleading status codes — for example, creating a duplicate topic returned 500 instead of 409. Kafka error mapping (kafka.go): - TopicAlreadyExists → CodeAlreadyExists (409) - UnknownTopicOrPartition, UnknownTopicID → CodeNotFound (404) - InvalidTopicException, InvalidPartitions, InvalidReplicationFactor, InvalidReplicaAssignment, InvalidConfig, InvalidRequest, PolicyViolation → CodeInvalidArgument (400) - RequestTimedOut → CodeDeadlineExceeded (408) - BrokerNotAvailable, LeaderNotAvailable, NotController, PreferredLeaderNotAvailable → CodeUnavailable (503) - UnsupportedVersion, SecurityDisabled → CodeUnimplemented (501) Schema Registry error mapping (schema_registry.go): - ErrSubjectSoftDeleted, ErrSchemaVersionSoftDeleted, ErrSubjectLevelModeNotConfigured → CodeNotFound - ErrReferenceExists, ErrOperationNotPermitted → CodeFailedPrecondition - ErrSchemaTooLarge, ErrInvalidRuleset, ErrInvalidMode → CodeInvalidArgument - ErrUnknownLeader → CodeUnavailable Updates 4 existing integration tests that asserted CodeInternal for InvalidConfig errors (now correctly CodeInvalidArgument). Adds integration tests for duplicate topic creation (CodeAlreadyExists) via both Connect RPC and HTTP. Ref: https://redpandadata.atlassian.net/browse/UX-990
Short-circuit auth errors before the general path using isKafkaAuthorizationError() directly. Delegate topic partition error handling to the central mapper to fix InvalidTopicException returning 404 instead of 400. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…TOPIC_EXCEPTION Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…Info detail - Add curated user-friendly messages for ~70 Kafka error codes - Add secondary ErrorInfo detail with domain "redpanda.com/dataplane/kafka" carrying the raw Kafka error name, code, description, and retriability - Expand gRPC code mappings from ~19 to 60+ Kafka error codes, adding FailedPrecondition, ResourceExhausted, Unauthenticated, and Aborted categories - Update message resolution to 4-tier fallback: custom msg > friendly map > kerr Description > unknown fallback - Add comprehensive tests for all new mappings and ErrorInfo details Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Purely a component change, the logic should remain the same.
And now matches edit-mode.
To the new UI registry components
Rewrite modals.tsx from imperative openModal() pattern to declarative controlled Dialog components. Replace Modal/Alert/Box/Button from @redpanda-data/ui with registry equivalents.
Replace legacy @redpanda-data/ui components with registry equivalents and sonner toasts. DataTable kept as-is for separate migration.
Replace all @redpanda-data/ui components with registry equivalents. Migrate toasts to sonner, Tabs to compound pattern, CodeBlock to DynamicCodeBlock, LegacyButton to Button+Tooltip. This also includes the update of the DynamicCodeBlock component which fixes the lack of syntax highlighting.
Replace legacy DataTable with useReactTable, composed Table/TableHeader/TableBody, and DataTablePagination. Zero @redpanda-data/ui imports remain in schemas directory.
Fix other places where useApiStoreHook might be missing
Add workflow to set Enterprise CI status to success on pushes that only affect non-code files (e.g. changelog, docs), avoiding blocked PRs.
docs: update CHANGELOG.md for v3.7.0
…topic-detail Fixes consumer loading in topic detail
…pport-features-disabled-state Fixes ACL disabled states + adds useSupportedFeaturesStore through the app
- Introduce Group principal type alongside User in ACL and role UIs, gated on the 'gbac' enterprise feature flag - Encode the full principal (Type:name) in ACL detail/update URLs; bare names default to User for backward compatibility - Show a Group badge next to group principal names in the ACL list - Display User and Group role members in separate sub-sections on the role detail page, with the ability to add Group principals when GBAC is enabled - Expose the gbac feature flag from the license service backend
…detail page - Unit tests for parsePrincipalFromParam covering User, Group, and bare name inputs - Integration tests for AclDetailPage verifying that principal types are preserved through URL params and that the edit button navigates with the correct path and host
Replace non-reactive api.* reads in render paths with useApiStoreHook selectors so that components re-render when store state changes. Affected components: AclList, PermissionsListTab, UsersTab, UserActions, RolesTab, and AclsTab. Update the backend-api mock in acl-list.roles tests to export useApiStoreHook, required since the component now calls it during render. Event-handler calls (deleteServiceAccount, refreshAcls, etc.) are left as-is.
Update useUpdateRoleMembershipMutation to immediately reflect add/remove operations in the listRoleMembers cache before the API responds. - onMutate: cancel in-flight queries, snapshot cache, apply change - onError: restore snapshot on API failure - onSuccess: invalidate queries as before to sync with the server Tests written TDD-style: three cases covering optimistic add, optimistic remove, and rollback on error.
…ation - Replace Chakra ConfirmItemDeleteModal with registry Dialog in DeleteUserConfirmModal and DeleteRoleConfirmModal; add try/finally so the portal always closes even on error - Move DeleteUserConfirmModal outside DropdownMenu in UserActions to resolve Radix FocusTrap vs Chakra FocusLock conflict (portal autocloses) - Switch RolesTab from MobX rolesApi.roles to useListRolesQuery so the list re-renders reactively after create/delete - Switch role-details.tsx delete from legacy rolesApi.deleteRole to useDeleteRoleMutation; navigate via TanStack Router instead of appGlobal.historyPush to ensure correct cache invalidation + routing - Add useInvalidateUsersCache to AclsTab so user list refreshes after delete; await onConfirm in modal handlers so invalidation completes before closing - Extract PermissionsListActions component with DeleteUserConfirmModal for user-delete actions in PermissionsListTab (consistency with UsersTab) - Add data-testid to delete buttons and confirm modal button - Fix RolePage E2E helper: wrong placeholder, wrong button test-id, wrong post-delete URL; add deleteRoleFromList and validateNotInList helpers - Add integration tests: list renders from useListRolesQuery, delete calls mutation with correct args - Add E2E spec roles-list.spec.ts: create appears in list, delete from list disappears, delete from details disappears Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… gray edit button - Delete role-details.tsx (class component no longer wired to any route; the active details page is role-detail-page.tsx which has no Delete button) - Remove 'role deleted from details' E2E scenario and its deleteRole() helper (the details page is ACL-config only; deletion is list-only) - Change roles-list edit button from ghost (blue) to secondary-ghost (dark gray) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…mModal The modal rewrite removed the testId from the confirmation Input, breaking the 'should delete a user' E2E test which targets this selector. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…mpiler The React Compiler cannot handle TryStatement with a finally clause. Replace with a plain await — on success the dialog closes normally; on error the mutation's onError handler shows a toast and the dialog stays open so the user can retry. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Show 'Role name' label in CreateACL when principal type is RedpandaRole - Update role-page test to use 'add-allow-all-operations-button' testId Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: pipeline name in view mode * feat: copy changes and better dialog styles * fix: diagram depth and width fixes * fix: fixed overflow and truncation issues in new pipeline UX * fix: collapses pipeline diagram nodes after 5 levels of nesting and surfaces a dot count * fix: claude comments
…e cleanup timeout (#2363) - In users.spec.ts: add waitForURL after fill so nuqs async navigate completes before asserting filtered counts - In debug-bundle-page.ts: increase cleanup Promise.race timeout from 60s to 90s for slower CI environments Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: include search params in MF v2 navigation sync The navigateTo effect and onRouteChange callback only compared/sent the pathname, losing search params (tab state, filters) during host ↔ remote navigation sync. Fix: - navigateTo effect: compare against pathname + searchStr so tab changes from the host are detected - onRouteChange: send pathname + searchStr so Console tab navigation syncs back to Cloud UI's URL This change is backwards compatible — if the host sends paths without search params, behavior is identical to before. Companion change in Cloud UI: redpanda-data/cloudv2#25381 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: add searchStr handling tests for MF v2 navigation sync Test that onRouteChange includes search params (e.g., ?tab=messages) and that navigateTo accepts paths with search params for host-driven navigation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pulls in a few enhancements / bug fixes
Run yes | bunx @fumadocs/cli add --dir https://redpanda-ui-registry.netlify.app/r combobox
* serverless: enable password change * serverless: remove unused prop
* chore: upgrade Module Federation and Rsbuild to latest Align with Cloud UI and ADP UI — all three apps now use MF 2.3.x and Rsbuild 1.7.x latest. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: remove accidentally committed files Remove docker-compose.yml and .mf/diagnostics that were untracked local files accidentally included in the previous commit. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: update lockfiles after MF/Rsbuild upgrade Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
frontend: migrate /schema-registry pages to new UI Registry components
* fix(frontend): resolve Snyk dependency vulnerabilities Add path-to-regexp override 8.4.0 to fix: - SNYK-JS-PATHTOREGEXP-15789763 (HIGH): ReDoS - SNYK-JS-PATHTOREGEXP-15789765 (HIGH): ReDoS Transitive via @modelcontextprotocol/sdk > express. Bump yaml from ^2.8.1 to ^2.8.3 and add cosmiconfig-scoped yaml@1.10.3 override to fix: - SNYK-JS-YAML-15765520 (MEDIUM): Uncontrolled Recursion Affects both direct dep and transitive via @emotion/babel-plugin. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(frontend): scope path-to-regexp override to avoid express@4 breakage Address Claude review feedback: scope the path-to-regexp override to only affect router (express@5) and not express@4's path-to-regexp@0.1.12 used by webpack-dev-server, which has an incompatible API. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.