Skip to content
Open
Show file tree
Hide file tree
Changes from 55 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
7584915
chore: prepare next version (4.12)
phiz71 Mar 13, 2026
9d71b70
chore: add code freeze automation script [skip ci]
phiz71 Mar 13, 2026
c05904f
chore: bump up json-policy-validation version
prateektiwari-gravitee Mar 10, 2026
f02bc34
style: add missing files license header
phiz71 Mar 13, 2026
20b9967
chore: fix mergify configuration [skip ci]
phiz71 Mar 13, 2026
c4046a1
feat(portal): bundle Redoc locally instead of loading from CDN
aqibmohammadkhan Mar 13, 2026
b846924
fix(gateway): add ERROR/WARN logs for silent failures
ytvnr Mar 12, 2026
7a5100c
feat(gateway): add DEBUG logs for HTTP/TCP request routing
ytvnr Mar 12, 2026
cdf74fc
feat(gateway): add DEBUG logs for subscription lookup, cache, and res…
ytvnr Mar 12, 2026
970c9de
feat(gateway): add DEBUG logs for flow resolution and policy chain ex…
ytvnr Mar 12, 2026
0b536e1
feat(gateway): add DEBUG logs for endpoint selection and load balancing
ytvnr Mar 12, 2026
68b2509
feat(gateway): add DEBUG logs for certificate handling and resource l…
ytvnr Mar 12, 2026
4a1e41e
fix(portal-next): JWT profile in API subscription advanced config
aditya-goyal01 Mar 11, 2026
6ef7bf7
chore: bump AI prompt guard rails policy to 3.2.1
thomasballivet Mar 13, 2026
483c9fc
chore: bump gravitee-reactor-native-kafka from 6.0.0-alpha.4 to 6.0.0…
callaertanthony Mar 16, 2026
c409ac6
fix: restrict API product visibility based on user permissions
vikrantgravitee Mar 14, 2026
e7b48da
fix: prevent placeholder from rendering as "undefined" when not set
JedrzejJanasiak Mar 10, 2026
3fba812
fix: replace OWASP sanitizer with tag-only strip for metadata
JedrzejJanasiak Mar 10, 2026
94559c7
ci: update bridge compatibility tests matrix [skip ci]
phiz71 Mar 16, 2026
953c03e
fix: align plan close with API and deploy validation for API Product
vikrantgravitee Mar 15, 2026
d46c1a9
ci: execute web libs tests on medium+ resource
phiz71 Mar 16, 2026
5b0665a
fix: improve catalog styles.
kovaren Mar 15, 2026
6e94aa0
fix: bump reactor-message version
pragsty Mar 16, 2026
70b948e
chore(helm): deprecate legacy logging configuration in values.yaml
ytvnr Mar 10, 2026
e4570fe
feat(helm): add logback override block for API
ytvnr Mar 10, 2026
1ef2579
feat(helm): add logback override block for gateway
ytvnr Mar 10, 2026
9323a17
feat(helm): add logback.override mechanism to configmap templates
ytvnr Mar 10, 2026
1d30a90
chore(helm): update deployment and helper conditions for logback.over…
ytvnr Mar 10, 2026
1de2e41
test(helm): add logback override tests for API and gateway
ytvnr Mar 10, 2026
c95baf9
docs(helm): document logback.override and node.logging parameters
ytvnr Mar 10, 2026
0fab62b
docs: artifacthub changes update
ytvnr Mar 16, 2026
cee7a1a
feat: add support for 'key' field in tag configuration and dialog forms
Okhelifi Mar 2, 2026
07c2083
feat: use tag key instead of id in API list
Okhelifi Mar 3, 2026
2ad2ef4
feat: use tag key instead of id in entrypoint mapping creation and up…
Okhelifi Mar 3, 2026
e425b37
feat: use tag key instead of id in api deployment configuration
Okhelifi Mar 3, 2026
25c9842
feat: sanitize tag key in organization settings
Okhelifi Mar 4, 2026
914bf6d
refactor: update component to use new angular features
Okhelifi Mar 4, 2026
ac9ef56
feat: use tag key instead of id in api plan form
Okhelifi Mar 4, 2026
5180d7d
feat: do not allow user to update tag key in tag dialog
Okhelifi Mar 5, 2026
b5e19a6
feat: add `key` field to Sharding Tag entities
aurelien-pacaud Mar 4, 2026
95fc0cd
feat: add `key` column to `tags` table and update repository logic an…
aurelien-pacaud Mar 4, 2026
e2edf94
feat: introduce TagKeyUpgrader to migrate tags with new key-based model
aurelien-pacaud Mar 5, 2026
cd2c2aa
refactor: extract key sanitization logic to shared utility
Okhelifi Mar 6, 2026
86ab69e
refactor: remove exception logging redundancy in JdbcTagRepository
aurelien-pacaud Mar 9, 2026
87e74f1
fix: align log details body sections
paulatulis Mar 16, 2026
1330540
test: use tag key instead of id in Swagger import E2E tests
Okhelifi Mar 16, 2026
200ed0f
fix: bridge compatibility tests
vikrantgravitee Mar 16, 2026
8206f0f
fix(jdbc): handle null httpMethods in FlowHttpSelector to prevent NPE
ThibaudAV Mar 16, 2026
9f2da98
fix(jdbc): change dictionary property value column type to nclob
ThibaudAV Mar 16, 2026
02ad7ac
chore: bump gravitee-resource-ai-vector-store-redis 1.0.0-alpha.4
thomasballivet Mar 16, 2026
0badc68
fix: improve application styles.
kovaren Mar 15, 2026
504d336
chore: bump http connector to 5.0.9
mukul-tyagi08 Mar 17, 2026
49a3585
fix: get rid of unnecessary logging registration
ytvnr Mar 17, 2026
8380a57
chore: bump dependencies
ytvnr Mar 17, 2026
3b8ea73
fix(reporter): handle binary metadata in v4 message logs
Mar 18, 2026
5ba631a
refactor(reporter): refine metadata rendering in v4 message logs
Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/ci/src/jobs/frontend/job-webui-lint-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,6 @@ export class WebuiLintTestJob {
}),
];

return new Job('job-webui-libs-lint-test', NodeLtsExecutor.create('medium'), steps);
return new Job('job-webui-libs-lint-test', NodeLtsExecutor.create('medium+'), steps);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -326,12 +326,11 @@ workflows:
- bridge
apim_client_tag:
- master-latest
- 4.11.x-latest
- 4.10.x-latest
- graviteeio@4.10.0
- 4.9.x-latest
- graviteeio@4.9.0
- 4.8.x-latest
- graviteeio@4.8.0
orbs:
keeper: gravitee-io/keeper@0.7.0
slack: circleci/slack@4.12.5
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ jobs:
job-webui-libs-lint-test:
docker:
- image: cimg/node:22.12.0
resource_class: medium
resource_class: medium+
steps:
- checkout
- cmd-install-yarn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,7 @@ jobs:
job-webui-libs-lint-test:
docker:
- image: cimg/node:22.12.0
resource_class: medium
resource_class: medium+
steps:
- checkout
- cmd-install-yarn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ jobs:
job-webui-libs-lint-test:
docker:
- image: cimg/node:22.12.0
resource_class: medium
resource_class: medium+
steps:
- checkout
- cmd-install-yarn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,7 @@ jobs:
job-webui-libs-lint-test:
docker:
- image: cimg/node:22.12.0
resource_class: medium
resource_class: medium+
steps:
- checkout
- cmd-install-yarn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ jobs:
job-webui-libs-lint-test:
docker:
- image: cimg/node:22.12.0
resource_class: medium
resource_class: medium+
steps:
- checkout
- cmd-install-yarn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,7 @@ export class BridgeCompatibilityTestsWorkflow {
matrix: {
execution_mode: ['v3', 'v4-emulation-engine'],
database: ['bridge'],
apim_client_tag: [
'master-latest',
'4.10.x-latest',
'graviteeio@4.10.0',
'4.9.x-latest',
'graviteeio@4.9.0',
'4.8.x-latest',
'graviteeio@4.8.0',
],
apim_client_tag: ['master-latest', '4.11.x-latest', '4.10.x-latest', 'graviteeio@4.10.0', '4.9.x-latest', 'graviteeio@4.9.0'],
},
}),
];
Expand Down
8 changes: 4 additions & 4 deletions .mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,13 @@ pull_request_rules:
----
{{ cherry_pick_error }}
title: "[4.7.x] {{ title }}"
- name: Apply commits on `4.6.x`
- name: Apply commits on `4.11.x`
conditions:
- label=apply-on-4-6-x
- label=apply-on-4-11-x
actions:
backport:
branches:
- 4.6.x
- 4.11.x
assignees:
- "{{ author }}"
body: |
Expand All @@ -112,4 +112,4 @@ pull_request_rules:

----
{{ cherry_pick_error }}
title: "[4.6.x] {{ title }}"
title: "[4.11.x] {{ title }}"
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,12 @@ describe('GioSideNavComponent', () => {
const expirationDateInOneYear = new Date();
expirationDateInOneYear.setFullYear(expirationDateInOneYear.getFullYear() + 1);

const init = async (licenseNotificationEnabled = true, hasLicenseMgmtPermission = true, scoringEnabled = true) => {
const init = async (
licenseNotificationEnabled = true,
hasLicenseMgmtPermission = true,
scoringEnabled = true,
hasApiProductPermission = true,
) => {
await TestBed.configureTestingModule({
declarations: [GioSideNavComponent],
imports: [NoopAnimationsModule, GioTestingModule, GioSideNavModule, MatIconTestingModule],
Expand All @@ -60,6 +65,10 @@ describe('GioSideNavComponent', () => {
if (isMatchingLicenseNotificationPermission && !hasLicenseMgmtPermission) {
return false;
}
const isMatchingApiProductPermission = permissions.length === 1 && permissions[0] === 'environment-api_product-r';
if (isMatchingApiProductPermission && !hasApiProductPermission) {
return false;
}
// Return default true for all the rest of 'hasMatching' permission checks
return true;
},
Expand Down Expand Up @@ -227,6 +236,22 @@ describe('GioSideNavComponent', () => {
});
expect(apiProductsItem?.iconRight$).toBeDefined();
});

it('should hide API Products menu item when user lacks environment-api_product-r permission', async () => {
await init(true, true, true, false);
expectLicense({ tier: '', features: [], packs: [], expiresAt: new Date() });

const apiProductsItem = fixture.componentInstance.mainMenuItems.find(item => item.displayName === 'API Products');
expect(apiProductsItem).toBeUndefined();
});

it('should show API Products menu item when user has environment-api_product-r permission', async () => {
await init(true, true, true, true);
expectLicense({ tier: '', features: [], packs: [], expiresAt: new Date() });

const apiProductsItem = fixture.componentInstance.mainMenuItems.find(item => item.displayName === 'API Products');
expect(apiProductsItem).toBeDefined();
});
});

function expectLicense(license: License) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ export class GioSideNavComponent implements OnInit, OnDestroy {
routerLink: './api-products',
displayName: 'API Products',
category: 'API Products',
permissions: ['environment-api_product-r'],
licenseOptions: apiProductsLicenseOptions,
iconRight$: apiProductsIconRight$,
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { NewTag } from './newTag';
export function fakeNewTag(attributes?: Partial<NewTag>): NewTag {
const base: NewTag = {
name: 'Internal',
key: 'internal',
description: 'A tag for all internal stuff',
};

Expand Down
1 change: 1 addition & 0 deletions gravitee-apim-console-webui/src/entities/tag/newTag.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
export interface NewTag {
name: string;
key: string;
description: string;
restricted_groups?: string[];
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ import { Tag } from './tag';

export function fakeTag(attributes?: Partial<Tag>): Tag {
const base: Tag = {
id: 'external',
id: '875fb0a0-1ea2-3a1d-bfd6-f59f9a18bd5b',
name: 'External',
key: 'external',
description: 'A tag for all external stuff',
};

Expand Down
7 changes: 7 additions & 0 deletions gravitee-apim-console-webui/src/entities/tag/tag.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@
*/
export interface Tag {
id: string;
name: string;
key: string;
description: string;
restricted_groups?: string[];
}

export interface UpdateTagEntity {
name: string;
description: string;
restricted_groups?: string[];
Expand Down
Loading