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
Shubhra Deshpande
49ff0da0c2 feat: Added Redis database and Redis flush worker (PROJQUAY-7176) (#4321)
* Added redis database and redis flush worker

* updated digest validation

* adding test coverage for scan_keys function

* adding test coverage

* added tests for scan function

* added coverage for flush to database function

* added coverage for gnuicorn worker initialization

* Replaced mock methods in the test with actual function calls

---------

Co-authored-by: shudeshp <shudeshp@redhat.com>
2025-10-17 09:27:11 -04:00
jbpratt
6c448cc915 ui: Add account settings to the new UI (PROJQUAY-9209) (#4367)
* ui: Add account settings to the new UI (PROJQUAY-9209)

- avatar functionality
- handle current logged in user avatar
- change pw
- change account type
- enable notifications
- delete account
- CLI config
- use react-hook-form
- fix checkbox state with modal
- fixes user save and lazy loads settings tab
- add e2e tests
- fix other tests failing on CI

* fix(web): address PR review feedback for user settings

- Add success alert and redirect after account conversion
- Fix error handling in ChangeAccountTypeModal
- Remove duplicate account conversion UI from BillingInformation
- Add conditional rendering for CLI auth types in CLIConfiguration
- Fix AlertVariant import in ChangeAccountTypeModal

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

* feat(web): add account settings link to user dropdown menu

Add a new "Account Settings" menu item to the user dropdown in the
header toolbar, making it easier for users to access their settings.

- Import UserCogIcon for the settings icon
- Add navigation handler for account-settings itemId
- Add Account Settings MenuItem before Logout in Actions menu group
- Navigate to /organization/{username}?tab=Settings when clicked

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

* fix(web): restore data-testid and fix Quota tab content in Settings

Recent account settings changes (7e864bbc) broke all quota.cy.ts tests by:
1. Removing data-testid attribute from Tab components
2. Using JSX instead of function for Quota tab content

This restores data-testid={tab.name} to enable test selectors and wraps
the Quota content in an arrow function to match other tabs.

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

---------

Co-authored-by: mfrances <mfrances@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-17 13:01:39 +00:00
jbpratt
1be2da4296 chore: skip flaky ui signin test (#4379)
to unblock automerges

Signed-off-by: Brady Pratt <bpratt@redhat.com>
2025-10-17 07:58:05 -04:00
jbpratt
7909f6009c feat(ui): add manifest layers tab to tag details (PROJQUAY-9269) (#4364)
* ui: Add Manifest Layers tab to Tag Details in new UI (PROJQUAY-9269)

* fix(ui): address feedback for manifest layers feature (PROJQUAY-9269)

- Accessibility: Add ARIA labels and semantic HTML to layer components
- Error handling: Display error state when manifest fetch fails
- Performance: Memoize layer reversal operation
- Fix typo in UseImageSize variable name
- Improve React key generation to avoid undefined keys
- Remove redundant key prop in LabelsReadOnly
- Add missing dependency to useEffect in TagDetails

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

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Brady Pratt <bpratt@redhat.com>

* fix(ui): prevent security state reset on URL param changes (PROJQUAY-9269)

Split useEffect into two separate effects to avoid clearing cached security
data when URL parameters change. Previously, adding a digest parameter (e.g.,
clicking vulnerability counts) would trigger a full state reset, causing the
Security Report and Packages tabs to show loading spinners indefinitely.

Now security state only resets when navigating to a different tag (org/repo/tag
changes), not when URL search params change. This preserves cached security
data when switching between tabs with URL parameters.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Brady Pratt <bpratt@redhat.com>

* fix(ui): ensure unique keys for layers with duplicate blob digests (PROJQUAY-9269)

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Brady Pratt <bpratt@redhat.com>

---------

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: mfrances <mfrances@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-16 11:24:42 -04:00
jbpratt
8f7036dd09 feat(ui): display Cosign shield icon for signed tags (PROJQUAY-9579) (#4372)
Add visual indicator for Cosign-signed tags in React UI to match
Angular UI functionality. Tags signed with Cosign now display a
shield icon next to the tag name with a tooltip.

Implementation:
- Add cosign_signature_tag fields to Tag interface
- Create client-side Cosign signature detection utilities
- Scan tags for pattern sha256-[digest].sig and map to signed manifests
- Display PatternFly shield icon inline with signed tags
- Add Cypress test for icon visibility

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-16 10:00:25 -05:00
Harish Govindarajulu
f63d25bdd3 nginx: Add nginx routing logic to default to react UI for downstream (PROJQUAY-9207) (#4252)
* Add ngnix routing logic to default to react UI for downstream

* Remove defaulting from env, update Makefile to build react by default for local

* Add cypress test for signin and create account workflow

* Add missing routes + fallback to backend server

* Hide UI toggle when defaulting to new UI

* Adds forgot password + recovery email, recaptcha, missing login checks

* Add external login screen + support for other login types for new UI

* Add new screen for update user after external login

* Add authorized apps section under external logins tab

* Implement updateuser react component + fix cypress test

* Fix external login OAuth flow for react

* switch logic to default to new ui

* Add DEFAULT_UI: angular to config for cypress CI

* Fix cypress tests for oauth-callback

* Rebase and fix merge conflicts

---------

Signed-off-by: harishsurf <hgovinda@redhat.com>
2025-10-14 15:10:39 -04:00
jbpratt
cfa7269777 ui: fix Popper positioning in FilterInput advanced search (PROJQUAY-9272) (#4359)
* ui: fix Popper positioning in FilterInput advanced search (PROJQUAY-9272)

The advanced search panel with "Use regular expressions" checkbox was not
appearing in the correct position. The Popper component was being appended
to the SearchInput element itself, causing CSS positioning issues where the
panel would overlay on top of the search input instead of appearing below it.

Fixed by implementing the containerRef pattern (matching Menu.tsx):
- Added containerRef to wrap SearchInput and Popper in a container div
- Changed appendTo from querySelector to containerRef.current
- Simplified Popper props to minimal working set (triggerRef, popper,
  isVisible, appendTo)
- Removed invalid props for PatternFly 5 Popper API

The panel now correctly appears below the advanced search button and the
checkbox toggles regex mode as expected.

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

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Brady Pratt <bpratt@redhat.com>

* Revert "ui: mark regex search test as skipped (PROJQUAY-9272) (#4342)"

This reverts commit c725d025e3.

* feat(ui): show empty on empty results

when filtering in non-regex mode - using a special character that
doesn't match anything causes the no repos available (permissions) page
to show. Instead, show the search bar with empty results

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

---------

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-14 13:05:14 -05:00
jbpratt
427107dd47 ui: add show/hide signatures toggle for tags view (PROJQUAY-7019) (#4334)
this adds functionality to filter out cosign signature tags (.sig),
SBOM tags (.sbom), and attestation tags (.att) from the tags list.
users can toggle visibility with a button in the toolbar, matching
the behavior from the angular UI. when repositories contain many tags
with signatures (1K+), this prevents UI cluttering by hiding signature
artifacts by default.

implementation:
- added showSignaturesState recoil atom to track toggle state
- added isCosignSignatureTag() utility to detect signature patterns
- added "Show/Hide Signatures" button to tags toolbar
- signature tags are hidden by default (showSignatures: false)
- filter applied before pagination and sorting

🤖 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-10-14 11:02:04 -05:00
jbpratt
8de588929e chore: npm audit fix (#4363)
from:

`30 vulnerabilities (5 low, 7 moderate, 16 high, 2 critical)`

to:

10 vulnerabilities (4 moderate, 6 high)

Signed-off-by: Brady Pratt <bpratt@redhat.com>
2025-10-14 08:31:46 -05:00
jbpratt
2b942639b9 feat(ui): display customized REGISTRY_TITLE (PROJQUAY-9525) (#4360)
set the REGISTRY_TITLE if available, default to `Quay` otherwise. Update
it to match in both the signin and root pages

Signed-off-by: Brady Pratt <bpratt@redhat.com>
2025-10-13 15:22:28 -05:00
jbpratt
c725d025e3 ui: mark regex search test as skipped (PROJQUAY-9272) (#4342)
the test is broken, marking as skipped until the feature is worked on to
fix regex searching

Signed-off-by: Brady Pratt <bpratt@redhat.com>
2025-10-10 09:09:06 -04:00
jbpratt
32f61efe8a ui: show custom REGISTRY_TITLE on login page (PROJQUAY-9461) (#4333)
the old UI shows this value in the login/sign in button

Signed-off-by: Brady Pratt <bpratt@redhat.com>
2025-10-08 16:42:49 +00:00
jbpratt
dff9fa8af8 web: consolidate organization hooks and fix cache invalidation (PROJQUAY-6522) (#4325)
consolidates UseCreateOrganization and UseDeleteOrganizations into
UseOrganizations to eliminate duplicate code and ensure consistent
query cache invalidation. previously, newly created/deleted orgs
didn't appear in the UI because invalidation keys didn't match the
query keys used to fetch data.

🤖 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-10-07 17:33:24 +00:00
jbpratt
2bcc11c5aa web: make team name clickable in Teams View (PROJQUAY-9347) (#4324)
* web: make team name clickable in Teams View (PROJQUAY-9347)

users can now click team name to navigate to team management page
where team description can be edited, matching old Angular UI behavior

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

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Brady Pratt <bpratt@redhat.com>

* web: show team desc if no members (PROJQUAY-9347)

allow setting the team description even if there are no members yet

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

---------

Signed-off-by: Brady Pratt <bpratt@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-07 13:30:59 -04:00
Shubhra Deshpande
ba57ee67e6 db: Added TagPullStatistics and ManifestPullStatistics tables with migrations (PROJQUAY-8414) (#4318)
Added TagPullStatistics and ManifestPullStatistics tables with migrations



---------

Co-authored-by: shudeshp <shudeshp@redhat.com>
2025-10-07 10:59:37 -04:00
Mark Franceschelli
6031dd47f2 ui: Add Quota management functionality to UI (PROJQUAY-8887) (#4243)
* working quota functionality

* add quota tests

* changes from code review
2025-10-02 17:00:58 -04:00
Mark Franceschelli
fdc940753b ui: Add column sorting to all tables in UI (PROJQUAY-9271) (#4255)
* abstracted quay table and hook, added sort to repo, org, tags tables

* security report and usage logs tables

* robot acct list and permissions tables

* default permissions and member view tables

* team view and build history tables

* notification and packages tables

* collaborators manage members and tag history tables

* sort numerically

* fix last accessed sort

* display teams tables correctly

* fix teams badge sort in members table

* collaborators table fix

* fix tests
2025-09-30 09:36:00 -04:00
Mark Franceschelli
f5b2d246d1 ui: Add OAuth applications to UI (PROJQUAY-7737) (#4165)
This PR adds the OAuth application workflow to the new Quay UI.

All UI components and functionality that existed in the legacy UI should now be working in the new React-based UI with Patternfly 5. Also added a full test suite for the OAuth application functionality.
2025-09-15 09:53:30 -04:00
Demetrius
8d96c8f51c deps: update sha.js to 2.4.12 (PROJQUAY-9332) (#4216)
update sha.js to 2.4.12
2025-08-26 18:25:14 +00:00
Antonio Carlos Royo
d2947906fe deps: update cipher-base to version 1.0.6 (PROJQUAY-9333) (#4214)
* Update cipher-base to version 1.0.6

* update web package-lock.json

---------

Co-authored-by: Antonio Carlos Royo <aroyo@aroyo-thinkpadp1gen7.rmtco.csb>
2025-08-26 16:54:11 +00:00
Brandon Caton
a8b5cf735e ui: conditionally rendering site unavailable message (PROJQUAY-7270) (#4201)
conditionally render message to prevent status link from showing for non-quay.io users
2025-08-18 16:44:28 -04:00
Brandon Caton
09ba46e025 ui: fixing flake by updating start date (#4188)
* ui: fixing flake by updating start date

* updating tag creation for other tests
2025-08-14 16:06:21 -04:00
Harish Govindarajulu
dc8ad71acd ui: add retry logic for user api to prevent infinite api call (PROJQUAY-9124) (#4153)
* ui: add retry logic for user api to prevent infinite api call (PROJQUAY-9124)

* use <LoadingPage> component when loading <PluginMain>

* Make fetching token async to avoid race condition leading to infinte API call

* Revert "ui: add retry logic for user api to prevent infinite api call (PROJQUAY-9124)"

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


This reverts commit 5f0b79a643.

---------

Signed-off-by: harishsurf <hgovinda@redhat.com>
2025-08-07 10:00:00 -04:00
Harish Govindarajulu
849da76256 oauth: Fallback to using depricated_sub since rhsso now has a new value for sub field (PROJQUAY-9124) (#4152)
* oauth: Fallback to depricated_sub when sub has new value (PROJQUAY-9124)

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

* Add test for rhsso backward compatability for deprecated_sub

* Address review comments

* Fix circular import

* Add additional tests for codecov

---------

Signed-off-by: harishsurf <hgovinda@redhat.com>
2025-07-31 08:48:03 -04:00
Harish Govindarajulu
e461c00192 ui: add banner for console.redhat.com for SSO issue (PROJQUAY-9124) (#4136)
* ui: add banner for console.redhat.com for SSO issue (PROJQUAY-9124)

* Add error handling when user is undefined

---------

Signed-off-by: harishsurf <hgovinda@redhat.com>
2025-07-22 11:58:21 -04:00
Mark Franceschelli
71cf930665 ui: Add Mirroring to ui (PROJQUAY-8886) (#4121)
This adds react code and patternfly components to handle Mirroring in the new Quay UI. Functionality should be equivalent to the old Angular code, and new test suite is passing locally. Added the react-hook-form library to simplify and reduce redundant form code. Also added the new Skopeo timeout interval field.
2025-07-17 15:01:56 -04:00
Antonio Carlos Royo
39278d46c4 deps: update pbkfd2 to version 3.1.3 (PROJQUAY-9051) (#4098)
Bump pdkfd2 to version 3.1.3

Co-authored-by: Antonio Carlos Royo <aroyo@aroyo-thinkpadp1gen7.rmtco.csb>
2025-07-02 15:06:08 -04:00
Jonathan King
84ad2b243a fix: pin https-proxy-agent version to v5 (PROJQUAY-8793) (#4090) 2025-06-25 14:34:57 -04:00
Brandon Caton
3a53bfaf40 ui: loading repository list immediately (PROJQUAY-5752) (#4086)
Instead of displaying loading screen while waiting for repository list to load, display the list immediately and load the repositories in the background so the list is immediately usable.
2025-06-25 11:15:02 -04:00
Ivan Bazulic
9be679eb58 mirror: Add job timeout to mirror configurations (PROJQUAY-7249) (#3723)
* mirror: Add job timeout to mirror configurations (PROJQUAY-7249)
Previous global job timeout of 5 minutes was inadequate for big images. The timeout should now be configurable in much the same way as sync is. Minimum job length is 300 seconds/5 minutes.

The PR is still work in progress.

* Fix init db, remove reference to user data in logs

* Fix tests, change repo mirror configuration

* Fix tests, make mirroring cancellable through UI

* Add cancel mirror test, change HTML document to reflect mirror timeout

* Flake8 doesn't like when '==' is used with 'None'

* Fix mirror registry tests

* Add new cypress data to fix cypress tests

* Added ability to define upload chunk size to RADOS driver, small changes to repo mirror HTML page

* Fix database migration to follow HEAD

* Upload new database data for Cypress tests

* Make skopeo_timeout_interval mandatory on API calls

---------

Co-authored-by: Ivan Bazulic <ibazulic@redhat.com>
2025-06-12 19:09:51 +02:00
Mark Franceschelli
3377dcbf72 ui: Add notification drawer to ui (PROJQUAY-6305) (#3870)
This adds react code and patternfly components to handle notifications in the new Quay UI, and display them using a notification drawer and header badge.
2025-06-09 14:27:26 -04:00
Jonathan King
77edd887a3 frontend: upgrade react from 17 to 18 (PROJQUAY-8793) (#3811)
* frontend: upgrade react from 17 to 18 (PROJQUAY-8793)

* fixing cypress tests

---------

Co-authored-by: Jonathan <jonathan@jonathans-mbp.mynetworksettings.com>
Co-authored-by: bcaton <bcaton@redhat.com>
2025-06-09 14:08:47 -04:00
Demetrius
92cc27f163 cve: bumping cross-spawn to 6.0.6 and 7.0.6 (PROJQUAY-8210) (#3932)
deps: update cross-spawn from 6.0.x to 6.0.6
deps: update cross-spawn from 7.0.x to 7.0.6
2025-05-20 14:28:15 -03:00
sayalibhavsar
1c70c960b4 bug: make changes to taghistory page to accept manually entered date (PROJQUAY-8633) (#3752)
projquay-8633 accepting dates in DD MMM YYYY format + calendar button is visible + fixing alignment across entire toolbox + improved logic for consistency across different browser language settings
2025-04-17 01:40:23 +05:30
Kenny Lee Sin Cheong
1af42c0b5a ui: render modelcard markdown tables (PROJQUAY-8680) (#3708)
* ui: render modelcard markdown tables (PROJQUAY-8680)

* ui: oembed to render embeded video in markdown (PROJQUAY-8679)

* ui: render tables and embeded links in markdown (PROJQUAY-8673)

* Github linked videos and Patternfly code block

* Limit img source to github and huggingface
2025-04-04 10:18:20 -04:00
sayalibhavsar
c7d2b67733 fix(ui): corrected pull column alignment in tag view (PROJQUAY-8623) (#3730)
PROJQUAY-8623: In Tag view, Pull column alignment doesn't consistent with others
2025-03-26 20:38:48 +05:30
Kenny Lee Sin Cheong
6bd8e8f428 nit: change ModelCard to Model Card (PROJQUAY-8716) (#3727) 2025-03-20 18:47:05 +00:00
Kenny Lee Sin Cheong
5f8ca041e7 ui: implement change to render modelcard stored in layers (PROJQUAY-8642) (#3692)
* ui: implement change to render modelcard stored in layers (PROJQUAY-8412)

When a manifest has certain annotations or artifactTypes, render the
applicable modelcard markdown in a new tags detail tab.

* removing untar when fetching model card

* removing extra api calls

* Add modelcar check tests

---------

Co-authored-by: bcaton <bcaton@redhat.com>
2025-03-05 19:14:22 +00:00
Brandon Caton
4663a9de44 ui: adding under_maintenance state to status indicator (PROJQUAY-8507) (#3609)
Adding under_maintenance state to status indicator
2025-02-03 11:38:59 -05:00
Marcus Kok
f69716b867 marketplace: splittable sku for MW02702 (PROJQUAY-8151) (#3389)
* marketplace: splittable sku for MW02702 (PROJQUAY-8151)
* Alembic migration to drop unique constraint on the orgrhsubscriptions
  table
* Can split sub quantities of MW02702 across multiple orgs
* Can specify quantity for the MW02702 SKU across orgs on react UI
* Update angular UI to allow user to specify quantities for MW02702
2025-01-09 09:37:09 -05:00
Brandon Caton
f0907c806d dep: updating css-loader to 6.11.0 (PROJQUAY-8297) (#3537)
updating css-loader to 6.11.0
2025-01-06 09:41:58 -05:00
Brandon Caton
32b8702b9c ui: fixing cypress flake (PROJQUAY-8352) (#3509)
There's a flake in the web/cypress/e2e/repository-permissions.cy.ts test where it is intermittently unable to type in the "Search for user, add/create robot account" search dropdown which occasionally fails the test. Since updating cypress the test fails consistently. This changes waits and clicks on the input allowing the type to complete and the dropdown to populate.
2024-12-13 11:27:28 -05:00
Shubhra Deshpande
831319e3b4 dep: adding fallback for process/browser as dependency of axios update (PROJQUAY-7657) (#3499)
dep: adding fallback for process/browser as dependency of axios update

Co-authored-by: shudeshp <shudeshp@redhat.com>
2024-12-11 14:10:23 -05:00
Brandon Caton
aefc89ae51 dep: updating axios (PROJQUAY-7657) (#3462)
Updating axios
2024-12-05 16:36:35 -05:00
Harish Govindarajulu
813be12ea7 ui: Add proxy cache config UI to org settings (PROJQUAY-7697) (#3388)
* ui: Add proxy cache config UI to org settings (PROJQUAY-7697)

* Fix alerts + reset input fields on user action

* Add cypress test for proxy cache config

* enable proxy cache for cypress test

* Propagate backend api error to UI

* Add additional cypress test coverage

* Fix eslint error

---------

Signed-off-by: harishsurf <hgovinda@redhat.com>
2024-11-27 07:56:20 +05:30
Daniel Messer
08d8922e54 ui: tag expiration settings support year values (PROJQUAY-8171) (#3370)
tag expiration settings support year values

Signed-off-by: dmesser <dmesser@redhat.com>
2024-10-29 13:35:57 +00:00
Harish Govindarajulu
2815424b72 ui: Render namespace values for <SelectOption> dropdown under Create Repository modal (PROJQUAY-8118) (#3356)
* ui: Render namespace values for <SelectOption> dropdown

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

* fix cypress test

---------

Signed-off-by: harishsurf <hgovinda@redhat.com>
2024-10-24 20:56:26 +00:00
Sunandadadi
96eb824ba4 ui: show user autoprune policies under repo autoprune policies tab (PROJQUAY-8093) (#3359) 2024-10-24 15:15:22 +00:00
Harish Govindarajulu
9f72e2efd9 ui: Update regex pattern helper text for validating team name (PROJQUAY-8110) (#3353)
* ui: update regex pattern in helpertext for team name(PROJQUAY-8110)

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

* old ui: update regex pattern for validating team name

---------

Signed-off-by: harishsurf <hgovinda@redhat.com>
2024-10-21 14:19:55 -04:00
Daniel Messer
8ec1badb43 ui: conditionally support custom tag expiration durations (PROJQUAY-6700) (#3341)
conditionally support custom tag expiration durations with reliable human-readable display

Signed-off-by: dmesser <dmesser@redhat.com>
2024-10-21 18:32:03 +02:00