1
0
mirror of https://github.com/quay/quay.git synced 2026-01-26 06:21:37 +03:00
Commit Graph

382 Commits

Author SHA1 Message Date
red-hat-konflux[bot]
793385e8d9 fix(deps): update dependency https-proxy-agent to v7
Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
2025-12-05 21:38:27 +00:00
jbpratt
f4957e3e29 chore: remove deprecated reCAPTCHA support (#4690)
Remove reCAPTCHA integration from the password recovery flow
as the feature has been deprecated.

Changes:
- Delete ReCaptcha component
- Remove recaptcha token handling from Signin page
- Simplify UsePasswordRecovery hook
- Remove react-google-recaptcha dependencies
- Clean up test fixtures and CSS

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-12-05 08:10:43 -06:00
jbpratt
c6d948e11b fix(web): display 0.00 KiB instead of N/A for zero sizes (PROJQUAY-9860) (#4686)
The formatSize() function used a falsy check which treated 0 as invalid,
returning "N/A" instead of formatting it. Now 0 displays as "0.00 KiB"
matching the legacy UI behavior.

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-12-03 19:44:53 +00:00
jbpratt
ed6ebc3ff6 feat(web): show password setup prompt for OIDC users in CLI config (PROJQUAY-9898) (#4681)
when using OIDC authentication and the user has no password set, display
an info alert with a "Set password" button to guide users through setting
up their CLI password

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-12-03 19:05:24 +00:00
Sunandadadi
acfbf1cb6d fix(web): enable user self-service email changes when FEATURE_MAILING enabled (PROJQUAY-9879) (#4675)
* fix(web): enable user self-service email changes when FEATURE_MAILING enabled (PROJQUAY-9879)

This commit fixes the issue where users received 401 Unauthorized errors
when attempting to update their email address in the new React UI when
FEATURE_MAILING is enabled.

Root cause: ChangeEmailModal was using the superuser-only endpoint
/api/v1/superuser/users/{username}, which regular users cannot access.

Changes:
- Added useChangeEmail hook in UseCurrentUser.ts that calls the correct
  user self-service endpoint /api/v1/user/ for email updates
- Modified ChangeEmailModal to support dual modes (superuser vs user)
  with isSuperuserMode prop for backward compatibility
- Updated GeneralSettings to display email as clickable link when
  FEATURE_MAILING is enabled, opening the modal for email changes
- Pre-fill modal with current email address for better UX
- Added validation to prevent submitting the same email address
- Added 8 comprehensive Cypress e2e tests covering email change flows

The fix implements the proper email verification workflow where users
receive a verification email and must confirm before the change is applied.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fixing tests

* resolving coderabbit suggestion

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-03 16:07:53 +00:00
jbpratt
365f88cf0b chore: remove debug css (#4669)
Signed-off-by: Brady Pratt <bpratt@redhat.com>
2025-12-02 15:16:36 +00:00
jbpratt
9337b87f0e fix(web): disable buttons for global readonly superuser (PROJQUAY-9873) (#4665)
Global readonly superusers could click Create Message and Service Key
buttons which then failed with 403 errors. These buttons are now disabled
using the existing useSuperuserPermissions hook's canModify flag.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-02 08:22:56 -06:00
jbpratt
754196f9ac fix(web): use correct terminology in user settings panel (PROJQUAY-9884) (#4659)
The settings page showed "Organization" labels and helper text even
when viewing a user namespace. Changed to conditionally display
"Username" for users and "Organization" for organizations.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-01 11:38:48 -06:00
jbpratt
0b8e74f5ac fix(web): resolve user settings log display issues (PROJQUAY-9881) (#4657)
fix(web): fix user settings log display issues (PROJQUAY-9881)

- Fix template interpolation in user_change_tag_expiration log message
- Add usageLogs query invalidation so logs refresh after settings update

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-01 17:21:04 +00:00
jbpratt
72d1e4f398 fix(web): show user namespace quota for non-superusers (PROJQUAY-9886) (#4658)
Normal users couldn't see their own namespace quota in the Organizations
list Size column. The backend already returns quota_report in /api/v1/user/
but the frontend wasn't using it. Added fallback to use current user's
quota_report when superuser data isn't available.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-01 11:11:26 -06:00
jbpratt
6bc089b61c fix(web): use correct error modal titles for different operations (PROJQUAY-9874) (#4655)
Previously, all errors on the Organizations page showed "Org deletion failed"
as the modal title, even for unrelated operations like registry size
calculation. This was confusing for Global Readonly Superusers who saw
"Org deletion failed" when trying to calculate registry size.

Changes:
- Separated error states in OrganizationsList.tsx (deletionErr, registryCalcErr)
- Added separate ErrorModal for registry calculation with correct title
- Fixed RepositoriesList.tsx ErrorModal title to "Repository deletion failed"
- Added Cypress test to verify correct error modal title

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-01 10:22:48 -06:00
jbpratt
37ca1eaf2d fix(web): hide Enable Team Sync when FEATURE_TEAM_SYNCING is false (PROJQUAY-9878) (#4654)
The UI was showing the "Enable OIDC Team Sync" button even when
FEATURE_TEAM_SYNCING was disabled in the config. Added check for
config?.features?.TEAM_SYNCING before displaying the team sync button.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-12-01 08:38:16 -06:00
Sunandadadi
e7988418f9 ui: ensure logout redirects to signin on network error (PROJQUAY-9792) (#4652)
fix(ui): ensure logout redirects to signin on network error (PROJQUAY-9792)

When the logout API call fails due to network error, the UI now properly
redirects to the signin page and clears the client-side session. Previously,
the user would be stuck on the current page with an error modal.

Changes:
- Move redirect and cleanup to finally block in logout handler
- Add optional chaining to user.username to prevent undefined errors
- Remove unused addDisplayError import
- Add comprehensive Cypress e2e tests for logout functionality

The finally block ensures client-side logout always succeeds, even when
the server is unreachable, improving security and user experience.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-01 03:18:36 -06:00
jbpratt
cdd8259c14 fix(web): load external scripts only when BILLING enabled (PROJQUAY-9803) (#4623)
Stripe and StatusPage scripts were hardcoded in index.html, causing
85-second delays in air-gapped/restricted networks as browsers waited
for connection timeouts.

Created useExternalScripts hook to dynamically load scripts only when
BILLING feature is enabled. Scripts load asynchronously to prevent
blocking page render. On-premise deployments (BILLING=false) no longer
make external requests.

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-25 22:55:10 +00:00
Brandon Caton
f57ac3f67f ui: checking field content in superuser build logs (PROJQUAY-9714) (#4640) 2025-11-25 15:19:16 -05:00
Harish Govindarajulu
36dff40df7 fix(ui): show quota consumed column for all users in organizations list (PROJQUAY-9850) (#4634)
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-25 19:37:21 +05:30
jbpratt
79f75e24b6 fix(web): display avatars for all entries in org table (PROJQUAY-9749) (#4615)
Previously only organizations and the logged-in user showed avatars.
Now all users and superusers display avatars by passing avatar data
from the API response through component props.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-25 19:36:41 +05:30
jbpratt
b4f1ef63c6 fix(web): hide Add Limit form in view-only quota pages (PROJQUAY-9845) (#4622)
Organization and user quota settings pages are view-only, but were
displaying an empty "Add Limit" form row with disabled controls.
This creates visual clutter and implies users can add limits when
they cannot.

Conditionally render the "Add Limit" card only when !isReadOnly to
match the behavior of the old Angular UI. Update Cypress tests to
verify the form does not exist (not just disabled) in view-only mode.
2025-11-25 04:17:23 -06:00
Sunandadadi
40ee3a5468 ui: prevent redirect to signin after OIDC username confirmation (PROJQUAY-9835) (#4629)
fix(web): prevent redirect to signin after OIDC username confirmation (PROJQUAY-9835)

When users authenticated via OIDC and confirmed their username, they were
incorrectly redirected back to the signin page instead of the home page.

This occurred because the OAuth flow stored the signin page URL in localStorage
as the redirect target. After username confirmation, the app would read this
stored URL and redirect back to signin, creating a loop.

The fix checks if the stored redirect URL contains '/signin' and navigates to
the home page instead.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-24 21:35:55 +00:00
Brandon Caton
4cddc368e9 ui: surfacing re-prompt for password (PROJQUAY-9844) (#4624) 2025-11-24 21:25:41 +00:00
Brandon Caton
b2141c1d60 ui: fix select during org delete bug (PROJQUAY-9843) (#4628) 2025-11-24 16:13:20 -05:00
jbpratt
f5db7ddb5b fix(web): sort Build History by timestamp instead of string (PROJQUAY-9686) (#4619)
Converts date strings to numeric timestamps for correct chronological sorting
2025-11-24 12:17:49 -06:00
jbpratt
b352135a85 fix(web): validate quota value input accepts only numbers (PROJQUAY-9837) (#4614)
* fix(web): validate quota value input accepts only numbers (PROJQUAY-9837)

Changed Storage Quota input from type="text" to type="number" to prevent
non-numeric characters from being entered. Also enhanced validation to
catch edge cases where parseFloat could incorrectly parse mixed values
like "300xxxx" as 300.

Co-authored-by: Claude <noreply@anthropic.com>

* chore: move quota test seeding

locally the test goes from 8 minutes to 55 seconds :)

Signed-off-by: Brady Pratt <bpratt@redhat.com>

---------

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-24 13:04:38 -05:00
jbpratt
bb31def220 chore: fix account settings navigation (#4607)
don't reload the page, use react router to navigate smoothly

Signed-off-by: Brady Pratt <bpratt@redhat.com>
2025-11-24 10:46:15 +05:30
jbpratt
9d0e3d29bc fix(ui): preserve mirroring credentials when updating tag pattern (PROJQUAY-9608) (#4410)
When updating mirroring configuration fields like tag patterns, credentials
were being cleared because the password field is empty by default for security.

Modified UseMirroringConfig to conditionally exclude credentials from the
update payload when the password field is empty and updating existing config.
This matches the Angular UI behavior where only changed fields are sent.

Added Cypress tests to verify credentials are preserved when updating other
fields without changing the password, and that credentials are included when
explicitly updated.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-20 22:57:36 +00:00
Brandon Caton
431094e244 ui: normalize user settings tabs (PROJQUAY-9814) (#4597) 2025-11-20 20:06:17 +00:00
Sunandadadi
fc913d0f18 ui: redirect new UI super user for fresh login when authentication type is OIDC (PROJQUAY-9748) (#4571)
* ui: redirect new UI super user for fresh login when authentication type is OIDC (PROJQUAY-9748)

* test(ui): Fix Cypress tests for fresh login OIDC flow (PROJQUAY-9748)

- Fixed incorrect API endpoint (/api/v1/superuser/logs* instead of /api/v1/superuserlogs**)
- Fixed incorrect route (/usage-logs instead of /superuser/usagelogs)
- Added proper authentication setup using cy.loginByCSRF
- Used fixtures (config.json, superuser.json) following existing test patterns
- Simplified tests to 3 critical cases: OIDC redirect, query param preservation, Database modal

---------

Co-authored-by: harishsurf <hgovinda@redhat.com>
2025-11-20 12:47:15 -05:00
jbpratt
c4847bc4b8 chore: add /about and /security static pages to new UI (#4592)
adds two new static information pages to the React UI:
- /about page with company info cards and bill-of-materials table
- /security page with security practices and features documentation

implementation includes:
- PatternFly components for consistent UI design
- sortable/filterable packages table with pagination
- actual CoreOS and Red Hat logos
- nginx routing configuration for new paths
- webpack config updates to handle image assets from src/assets

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-20 16:08:40 +00:00
Brandon Caton
aa3079b2a6 ui: adding redirect to update info page (PROJQUAY-9744) (#4579) 2025-11-20 10:41:00 -05:00
Harish Govindarajulu
770e60b942 fix(ui): Add OAuth state parameter for CSRF protection (PROJQUAY-9805) (#4562)
Implement RFC 6749 Section 10.12 compliant state parameter to prevent
CSRF attacks in OAuth token generation flow.

Changes:
- Generate cryptographically secure state using crypto.randomUUID()
- Store state in sessionStorage before OAuth redirect
- Parent window validates state from popup via postMessage
- Read state from query params (backend echoes it back)
- Display security error for invalid/missing state
- Add Cypress tests for state validation and CSRF protection

Security Impact:
- Prevents CSRF token theft and session fixation attacks
- Complies with OAuth 2.0 security best practices
- React UI only; Angular UI remains unchanged

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-20 15:17:18 +00:00
Brandon Caton
2bf41caba1 ui: removing feedback banner (PROJQUAY-9811) (#4577) 2025-11-20 04:29:54 -06:00
Harish Govindarajulu
129ca2ae29 fix(ui): Enable organization/user visibility for read-only superusers (PROJQUAY-6882) (#4545)
* fix(ui): Enable organization/user visibility for read-only superusers (PROJQUAY-6882)

Users listed under GLOBAL_READONLY_SUPER_USERS can now see all
organizations and users in the UI, matching regular superuser visibility
with read-only restrictions on actions.

- Update UseCurrentUser to include global_readonly_super_user in isSuperUser check
- Add Cypress tests for read-only superuser visibility and action restrictions
- Settings column actions correctly hidden via existing canModify permission

* fix(ui): Add global_readonly_super_user field to API responses (PROJQUAY-6882)

- Add global_readonly_super_user field to user API response in endpoints/api/user.py
- Allow read-only superusers to view organization teams in endpoints/api/organization.py
- Allow read-only superusers to view robot permissions in endpoints/api/robot.py

* fix(ui): Prevent read-only superusers from deleting orgs/users

Security fix: Read-only superusers should not be able to delete
orgs or users they don't own, even though they can view them.

* Fix inline import + incorrect assert + add codecov tests

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-20 01:31:59 -06:00
jbpratt
6160982a57 fix(web): fetch build logs from separate endpoint in superuser panel (PROJQUAY-9714) (#4493)
The superuser build logs feature was calling only
/api/v1/superuser/<build_uuid>/build which returns build metadata but
NOT logs. Logs are available from a separate
/api/v1/superuser/<build_uuid>/logs endpoint that must be called
separately.

Updated fetchBuildLogsSuperuser() to fetch both endpoints in parallel
using Promise.all and merge the results. This matches the behavior of
the old AngularJS UI which called both endpoints separately.

Updated Cypress tests to mock both API endpoints.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-19 16:07:35 -05:00
jbpratt
5de525bfa1 chore: extract logo selection logic into reusable hook (#4566)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-19 18:38:05 +00:00
Brandon Caton
dfc4137d36 ui: allow for team creation while creating notification (PROJQUAY-9727) (#4570) 2025-11-19 12:52:53 -05:00
jbpratt
fadd126fcb fix(web): fix inline markdown code rendering (PROJQUAY-9809) (#4569)
React-markdown v10.x no longer reliably passes the inline prop to
custom code components. Changed detection to check for newlines in
code content instead, which correctly distinguishes inline code from
code blocks.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-19 17:11:41 +00:00
jbpratt
b19b915aa3 chore: don't show status code to users (#4540)
remove status code formatting from getErrorMessage to prevent exposing
the status code to users - reducing the noise of the error messages

Signed-off-by: Brady Pratt <bpratt@redhat.com>
2025-11-19 09:04:12 +05:30
Brandon Caton
a9d2d89505 ui: rendering error for splunk logs (PROJQUAY-6934) (#4558) 2025-11-18 21:07:09 +00:00
Brandon Caton
db275c441b ui: paginating application tokens (PROJQUAY-9778) (#4523)
* ui: paginating application tokens (PROJQUAY-9778)

* fixing tests
2025-11-18 15:54:27 -05:00
jbpratt
110956731f fix(web): hide user tabs when superuser views other users (PROJQUAY-9753) (#4547)
Superusers viewing another user's account now only see the Repositories
tab, matching the old UI behavior. Settings, Robot accounts, External
logins, and Logs tabs are now only visible when viewing your own account.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 14:23:08 -06:00
jbpratt
47f7e1c910 fix(web): hide 'Last Updated' for OIDC team sync (PROJQUAY-9773) (#4546)
OIDC team sync adds users automatically on login, so periodic sync
status doesn't apply like it does for LDAP.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 16:18:04 +00:00
Harish Govindarajulu
ebf9a06fd5 fix(ui): Add missing superuser routes to nginx to prevent 404 (PROJQUAY-9741) (#4529)
Signed-off-by: harishsurf <hgovinda@redhat.com>
2025-11-18 21:03:00 +05:30
jbpratt
842905a300 fix(web): use correct API endpoint for user quota (PROJQUAY-9785) (#4541)
Regular users viewing their own quota need to use /api/v1/user/quota
endpoint, not the superuser endpoint which returns 403 permission
denied. Added viewMode parameter ('self'|'organization'|'superuser')
to properly route quota requests to the correct backend endpoint.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 10:04:32 -05:00
jbpratt
725132d45f fix(web): display backend-generated password in user creation (PROJQUAY-9780) (#4542)
The new UI was collecting a password from the superuser during user
creation, but the backend API ignores this and generates a random
32-character password instead. The UI never displayed this generated
password, causing users to be unable to log in.

This fix removes the password input fields from the Create User modal
and displays the backend-generated password in a ClipboardCopy component
after successful creation, matching the behavior of the old Angular UI.

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 09:54:01 -05:00
jbpratt
a123b72d02 fix(web): handle user deletion via Actions dropdown (PROJQUAY-9788) (#4539)
The bulk delete functionality incorrectly called the organization delete
API for both users and organizations, causing failures when attempting to
delete users via the Actions dropdown. This separates the deletion logic
to call the appropriate API endpoint based on entity type (isUser flag).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 07:23:22 +05:30
Harish Govindarajulu
a7d01d052d fix(ui): Add "Requires fresh login" checks for superuser operations (PROJQUAY-9658) (#4451)
* fix(ui): show password verification for take ownership (PROJQUAY-9658)

Co-authored-by: Claude <noreply@anthropic.com>

* fix(ui): add fresh login verification to superuser operations (PROJQUAY-9658)

  Implemented password verification modal for sensitive superuser operations
  that require fresh login. Added fresh login handling to:
  - Delete organization
  - Rename organization
  - Delete user
  - Create user
  - Change user password
  - Change user email

  Also fixed UseCreateUser hook to pass error object instead of string
  to enable fresh login detection.

  🤖 Generated with [Claude Code](https://claude.com/claude-code)

  Co-Authored-By: Claude <noreply@anthropic.com>

* fix(ui): implement global fresh login with request queuing (PROJQUAY-9658)

Replaced component-level fresh login handling with centralized axios
interceptor approach. All failed requests due to fresh login requirement
are now queued and automatically retried after password verification.

- Add axios interceptor to catch 401 fresh_login_required globally
- Implement request queuing mechanism for pending operations
- Add global FreshLoginModal at app root level
- Remove component-level useFreshLogin hook from all modals
- Close operation modals immediately after submit (request queued if needed)
- Add fresh login support for quota management operations

* Add Cypress tests for fresh login flow (6 tests)

* Address code rabbit reviews

* fix(ui): handle fresh login password verification errors

- Display error toast when wrong password entered in verification modal
- Add centralized fresh login error filtering utility
- Add Cypress tests for wrong password and retry scenarios

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 05:23:35 +05:30
Harish Govindarajulu
1863c05213 fix(ui): Add infinite scroll and load more button to usage logs (PROJQUAY-9717) (#4525) 2025-11-17 21:14:39 +05:30
Harish Govindarajulu
decd22c425 fix(ui): Add missing operation types to usage logs chart (PROJQUAY-6881) (#4530)
* fix(ui): Add missing operation types to usage logs chart (PROJQUAY-6881)

Signed-off-by: harishsurf <hgovinda@redhat.com>

* Apply suggestion from @coderabbitai[bot]

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Signed-off-by: harishsurf <hgovinda@redhat.com>
Co-authored-by: jbpratt <jbpratt78@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-11-17 20:54:43 +05:30
jbpratt
d972f3690d chore: remove prop-types dependency usage in favor of TypeScript types (#4510)
Converted all remaining prop-types usage to TypeScript interfaces:
- SystemStatusBanner: Added BannerContentProps interface
- DateTimePicker: Added DateTimePickerProps interface

prop-types remains as transitive dependency but is no longer directly
imported or used in the codebase.

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-17 03:16:47 -06:00
Harish Govindarajulu
1541a5beaf fix(ui): Remove local dev test configs (PROJQUAY-9753) (#4520)
ui: Remove local dev test configs (PROJQUAY-9774)
2025-11-14 21:25:47 +05:30