Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request delivers a significant enhancement to the asset management system by introducing robust capabilities for filtering and displaying TLS certificate information. It provides users with a dedicated interface to explore TLS assets, complete with detailed certificate data and an intuitive filtering mechanism, backed by an optimized and paginated API. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a new TLS filter for assets, enhancing the filtering capabilities on the assets page. The changes span both the frontend and backend, including new components for the filter and table view, and backend modifications to support querying and paginating TLS assets. A notable improvement is the refactoring of the backend to use a database view for TLS data, which should improve performance and maintainability. The implementation is solid, but I have a few suggestions to enhance code clarity and remove some redundancies.
There was a problem hiding this comment.
Pull request overview
Adds first-class TLS certificate browsing/filtering to the Assets area by introducing a DB view-backed TLS “asset” projection, exposing it via a paginated /api/assets/tls endpoint, and wiring new TLS UI (tab + faceted filter) in the console.
Changes:
- Introduce
tls_assets_view(TypeORM@ViewEntity) to flatten TLS JSON into queryable columns and relate it toAssetService. - Update Core API
/api/assets/tlsto support pagination/filtering/sorting and expand the TLS response fields (CN, issuer DN, version, cipher). - Add Console TLS tab and a “TLS Host” faceted filter; extend asset list filtering with
tlsHosts.
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| worker/services/core-api/api.ts | Updates generated worker client typings + TLS endpoint query support. |
| core-api/src/modules/assets/entities/tls-assets.entity.ts | Adds TlsAssetsView view entity to flatten TLS JSON for querying. |
| core-api/src/modules/assets/entities/asset-services.entity.ts | Adds tlsAssets relation from AssetService to the TLS view. |
| core-api/src/modules/assets/dto/tls.dto.ts | Expands TLS response DTO and adds query DTO for TLS endpoint filtering. |
| core-api/src/modules/assets/dto/get-faceted-data.dto.ts | Extends faceted data DTO with tlsHosts. |
| core-api/src/modules/assets/dto/assets.dto.ts | Adds tlsHosts filter param for general asset listing. |
| core-api/src/modules/assets/assets.service.ts | Adds TLS host filtering via base query join and rewrites getManyTls to be paginated/filterable/sortable. |
| core-api/src/modules/assets/assets.module.ts | Registers TlsAssetsView with TypeORM module feature entities. |
| core-api/src/modules/assets/assets.controller.ts | Updates /tls handler to accept query params and call the new service signature. |
| console/src/services/apis/gen/queries.ts | Updates generated console API hooks/types for new TLS endpoint params and response fields. |
| console/src/pages/assets/list-assets.tsx | Adds a new “TLS” tab to the assets page. |
| console/src/pages/assets/context/asset-context.tsx | Adds tlsHosts to shared filter/query params and query keys. |
| console/src/pages/assets/components/tls-assets-tab.tsx | New TLS tab that renders a server-driven TLS table and collapsible filtered asset list. |
| console/src/pages/assets/components/tls-assets-column.tsx | New TLS table column definitions (host, subject DN, validity, etc.). |
| console/src/pages/assets/components/filter-form-infinite.tsx | Adds tlsHosts to the “isFiltered” facet list and renders TLS faceted filter. |
| console/src/pages/assets/components/faceted-filter.tsx | Adds TlsFacetedFilter powered by the TLS endpoint infinite query. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
l1ttps
left a comment
There was a problem hiding this comment.
Thanks @mizhm for this PR! The TLS filter implementation looks great.
I particularly like:
- The TlsAssetsView design - flattening JSONB data into a proper view entity for efficient querying
- Consistent pagination/sorting implementation that matches the existing patterns in the codebase
- The ExpiryBadge component with visual indicators for certificate expiration status
- Clean integration with the existing asset context and filter system
The architecture is solid and the code follows project conventions well. The deduplication logic grouping by all TLS columns ensures we get unique certificate combinations while aggregating across multiple asset services.
Great work!
No description provided.