Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
317 commits
Select commit Hold shift + click to select a range
4ce4ced
chore(workflows): update pull request trigger and adjust build cmds (…
RemiBonnet Feb 13, 2026
c507cb9
feat(tests): fix all tests and improve CI (#2383)
RemiBonnet Feb 16, 2026
649e529
Merge branch 'staging' into new-navigation
RemiBonnet Feb 16, 2026
641e758
feat(container-registries): added container-registries settings page …
TheoGrandin74 Feb 16, 2026
0285248
feat(user-settings): implement user settings modal (#2388)
RemiBonnet Feb 16, 2026
bcd671a
feat(alerts): add alert organization pages (#2386)
RemiBonnet Feb 18, 2026
5bbbb00
feat(danger-zone): added organization danger zone and update tests (#…
TheoGrandin74 Feb 18, 2026
221d8cc
feat(helm-repositories): implement helm repositories settings page an…
TheoGrandin74 Feb 18, 2026
64a6bbd
feat(danger-zone): enhance organization danger zone access control an…
TheoGrandin74 Feb 19, 2026
49264a5
feat(api-token): add settings page to new navigation (#2399)
TheoGrandin74 Feb 19, 2026
e50b111
feat(git repositories access): Adding Git repositories access page to…
TheoGrandin74 Feb 19, 2026
b9ff0ec
feat(webhooks): implement webhook settings page with modal (#2389)
TheoGrandin74 Feb 19, 2026
52cdc54
feat(cloud-credentials): implement cloud credentials management page …
TheoGrandin74 Feb 19, 2026
fbcde18
feat(new-nav): add audit logs page (#2375)
rmnbrd Feb 19, 2026
05fd145
feat(billing-details): implement billing details settings page and te…
TheoGrandin74 Feb 19, 2026
eea7047
impr(new-nav): env overview loading and ErrorBoundary (#2397)
rmnbrd Feb 19, 2026
de4e742
feat(ai-copilot): refactor AI Copilot settings (#2403)
TheoGrandin74 Feb 23, 2026
6021a81
feat(new-nav): add deployment history for envs (#2407)
rmnbrd Feb 24, 2026
7d89f9e
feat(billing-summary): billing summary page (#2401)
TheoGrandin74 Feb 24, 2026
cd3fed9
fix(new-nav): updating env overview to use EnvironmentStateChip inste…
rmnbrd Feb 24, 2026
39f7fcd
feat(members): adding members to console v5 and tokenization (#2413)
TheoGrandin74 Feb 25, 2026
bd23353
feat(service-overview): add new ui (#2412)
RemiBonnet Feb 25, 2026
63ea6a1
feat(audit-logs): enhance audit logs diff UI and add it to container-…
TheoGrandin74 Feb 26, 2026
e946f61
feat(deployment-history): add service deployment and update environme…
RemiBonnet Feb 26, 2026
bf89105
fix(environment-deployment-list, service-deployment-list): update col…
RemiBonnet Feb 26, 2026
e6e0e7d
impr(new-nav): update lint rules for routeTree.gen file so we avoid u…
rmnbrd Feb 26, 2026
9b28d7f
feat(org settings): adding suspense logic and harmonizing skeletons a…
TheoGrandin74 Feb 26, 2026
0bfb112
feat(roles & permissions): tokenization and addition to console-v5 (#…
TheoGrandin74 Feb 26, 2026
8fc723c
feat(service-monitoring-dashboard): add view (#2427)
RemiBonnet Feb 27, 2026
d074ea1
Merge branch 'staging' into new-navigation
RemiBonnet Mar 2, 2026
ef264c1
Merge 'staging' into 'new-navigation'
RemiBonnet Mar 2, 2026
3e49230
fix(cluster): general settings section heading for labels
RemiBonnet Mar 2, 2026
1602e6f
feat(breadcrumbs): add service support + suffix rendering (#2433)
RemiBonnet Mar 2, 2026
09ed906
feat(service-variables): add service variables route + hide it for da…
RemiBonnet Mar 3, 2026
3e423a6
fix(service): add settings layout and danger-zone (#2437)
RemiBonnet Mar 3, 2026
e102b71
feat(new-nav): add Env overview page (#2436)
rmnbrd Mar 3, 2026
18297bb
feat(service-monitoring-alerts): add view (#2428)
RemiBonnet Mar 3, 2026
b2e1710
fix(observability-callout): update styles for improved contrast (#2446)
RemiBonnet Mar 4, 2026
d2ab02f
feat(services): add services/new page (#2442)
RemiBonnet Mar 5, 2026
9fe3409
fix(dropdown-services): new token previous next btn (#2449)
RemiBonnet Mar 5, 2026
1b35d2c
feat(new-nav): add service logs page (#2441)
rmnbrd Mar 5, 2026
44ffd03
Merge branch 'staging' into new-navigation
rmnbrd Mar 5, 2026
4ee0caf
feat(application-container-creation-flow): add general step (#2451)
RemiBonnet Mar 6, 2026
65105c3
fix(variable-list): show service link in built-in list (#2452)
RemiBonnet Mar 6, 2026
fa61529
fix(new-nav): Fix the TS definition of the Link component (#2450)
rmnbrd Mar 6, 2026
e44af25
fix(new-nav): make environment overview's table rows clickable (#2455)
rmnbrd Mar 9, 2026
b37acbb
feat(service-settings): add advanced settings views (#2440)
RemiBonnet Mar 9, 2026
cb8d8f0
fix(ui): truncate label breadcrumb, pods details, outline link (#2456)
RemiBonnet Mar 9, 2026
33d2d13
feat(services): add general settings (#2454)
RemiBonnet Mar 9, 2026
d71be04
feat(application-container-creation-flow): add resources step (#2459)
RemiBonnet Mar 10, 2026
444cb9e
Merge branch 'staging' into new-navigation
RemiBonnet Mar 10, 2026
5b5b3ff
feat(services): add resources settings (#2461)
RemiBonnet Mar 10, 2026
e83bbba
feat(new-nav): add env deployment details view (#2460)
rmnbrd Mar 11, 2026
9326b7c
feat(service-port): add creation flow and settings (#2464)
RemiBonnet Mar 11, 2026
e7f58ac
feat(ui): cluster loading, update pods view, database colors tokens (…
RemiBonnet Mar 12, 2026
28b7a13
feat(service-healthchecks): add creation flow and settings (#2466)
RemiBonnet Mar 12, 2026
7893643
feat(new-nav): make deploy menus consistent (#2469)
rmnbrd Mar 12, 2026
e7ade77
feat(application-container-creation-flow): add flow (#2470)
RemiBonnet Mar 12, 2026
28957a8
fix(breadcrumb-item): update condition for rendering one item (#2476)
RemiBonnet Mar 13, 2026
46e3b20
feat(new-nav): add tabbar for env overview section (#2480)
rmnbrd Mar 16, 2026
064c990
fix(inputs): improve input with value with label transition (#2479)
RemiBonnet Mar 16, 2026
5fa9ad0
feat(spotlight): add tanstack routes (#2481)
RemiBonnet Mar 16, 2026
e027557
fix(cluster-deployment-progress-card): update gradient text colors an…
TheoGrandin74 Mar 16, 2026
35852e4
feat(database-creation-flow): add flow (#2471)
RemiBonnet Mar 16, 2026
f7378ec
feat(deployment-rules): implement create, edit, and index routes for …
TheoGrandin74 Mar 16, 2026
be643a5
feat(organization): Breacrumb alignment and BlockContent padding (#2485)
TheoGrandin74 Mar 16, 2026
f844a6f
feat(terraform overview): styling improvments on output variables and…
TheoGrandin74 Mar 17, 2026
1cf8dc7
refactor(styles): update font weights and avatar size for lighter int…
TheoGrandin74 Mar 17, 2026
a8f2df7
fix(inputs): improve input with value with label transition (#2482)
RemiBonnet Mar 17, 2026
28cd1f3
feat(storage-settings): add view (#2475)
RemiBonnet Mar 17, 2026
7a53d4d
feat(domain-settings): add view (#2473)
RemiBonnet Mar 17, 2026
f5ed773
feat(deployment-restrictions-settings): add view (#2478)
RemiBonnet Mar 17, 2026
8e2643f
fix(cluster-advanced-settings): update table head to match style of o…
TheoGrandin74 Mar 17, 2026
d75ef2a
refactor(pages): unify padding across various pages for consistency (…
TheoGrandin74 Mar 18, 2026
d4c7f78
refactor(icons): update color classes for deployment icon and compone…
TheoGrandin74 Mar 18, 2026
6dad693
refactor(cluster): update styles and layout for cluster creation and …
TheoGrandin74 Mar 18, 2026
29ed2af
feat(audit-logs): harmonize audit logs header with other pages header…
TheoGrandin74 Mar 18, 2026
672a94c
refactor(sidebar): hover style update (#2493)
TheoGrandin74 Mar 18, 2026
27d68e6
feat(services-deployment-pipeline): add view (#2486)
RemiBonnet Mar 18, 2026
ee2a572
feat(service-terminal): add component (#2494)
RemiBonnet Mar 18, 2026
5781cf2
fix(input-select): improved disabled state styling for inputs and sel…
TheoGrandin74 Mar 18, 2026
0437f8f
fix(new-nav): redirect issue (#2502)
rmnbrd Mar 18, 2026
45c04db
fix(design): update styles for logs, service overview, breadcrumb (#2…
TheoGrandin74 Mar 18, 2026
60927ce
feat(ai-copilot-settings): harmonizing settings layout with other set…
TheoGrandin74 Mar 18, 2026
30123f6
fix(git-webhook-status-badge): design improvments on git webhook badg…
TheoGrandin74 Mar 19, 2026
cb87ed1
fix(need-redeploy-flag): full width outside container (#2503)
RemiBonnet Mar 19, 2026
5ef4b23
feat(new-nav): add deployment logs (#2487)
rmnbrd Mar 19, 2026
3eaf14e
Merge branch 'staging' into new-navigation
rmnbrd Mar 19, 2026
45c1eed
fix(new-nav): failing unit tests (#2506)
rmnbrd Mar 19, 2026
3c2f952
refactor(monitoring-dashboard): replace Heading with styled div for s…
TheoGrandin74 Mar 19, 2026
3da0db5
fix(environments): enhance environments table (#2507)
RemiBonnet Mar 19, 2026
683137f
fix(webflow): changelog synchronization on build (#2509)
RemiBonnet Mar 19, 2026
65aef9e
fix(database): add managed database mode selection (#2513)
RemiBonnet Mar 20, 2026
1e0a39e
Merge branch 'staging' into new-navigation
rmnbrd Mar 20, 2026
4f67007
fix(new-nav): add missing unavailable status to new DeploymentAction …
rmnbrd Mar 20, 2026
7253936
refactor(styles): update disabled state for input and select, harmoni…
TheoGrandin74 Mar 20, 2026
e65e956
feat(service-header): added cluster redirection to service overview (…
TheoGrandin74 Mar 20, 2026
4f8ba74
feat(cluster-nodes): distinguish deploying vs removing node status
acarranoqovery Mar 20, 2026
563a9a3
feat(variable): add import .env (#2518)
RemiBonnet Mar 20, 2026
f9fe143
feat(posthog): synchronize identified user with Auth0 (#2523)
RemiBonnet Mar 20, 2026
42f1e61
feat(new-nav): clean up service logs layout (#2522)
rmnbrd Mar 20, 2026
1280bbf
feat(new-nav): add last deployment section to env overview (#2514)
rmnbrd Mar 20, 2026
dfaccdb
fix(posthog): enhance organization tracking (#2525)
RemiBonnet Mar 23, 2026
556c611
fix(login): add color token (#2526)
RemiBonnet Mar 23, 2026
408d793
fix(cluster): add EKS Anywhere configuration view and cluster feedbac…
RemiBonnet Mar 23, 2026
2706bb7
fix(cluster-update-modal): update navigation and color tokens (#2528)
RemiBonnet Mar 23, 2026
3fb6812
refactor(cluster-metrics): simplify node removing detection to use un…
acarranoqovery Mar 23, 2026
12fadb6
fix(navigation): update breadcrumb paths and navigation redirects (#2…
RemiBonnet Mar 24, 2026
82b5d62
feat(clone-service): enhance routing and mutation logic for cloning s…
RemiBonnet Mar 24, 2026
800c143
feat(routes): add cloud shell routes for clusters and services (#2521)
TheoGrandin74 Mar 24, 2026
48ce882
Merge remote-tracking branch 'origin/staging' into new-navigation
RemiBonnet Mar 24, 2026
534cfc6
fix(devops-copilot): routing bugs with merge
RemiBonnet Mar 24, 2026
226ecee
fix(cluster-logs): improve log rendering and perf (#2532)
RemiBonnet Mar 24, 2026
4503419
feat(new-nav): add pre-check logs view (#2534)
rmnbrd Mar 25, 2026
50e8e7f
feat(new-nav): add missing logs links (#2519)
rmnbrd Mar 25, 2026
6846b5f
fix(devops-copilot): add feature
RemiBonnet Mar 24, 2026
18e42c1
refactor(devops-copilot): update UI components and remove unused empt…
RemiBonnet Mar 24, 2026
9a2d355
refactor(devops-copilot): improve UI text and loading state handling
RemiBonnet Mar 24, 2026
a28272c
feat(devops-copilot): integrate AI diagnostic feature for deployment …
RemiBonnet Mar 25, 2026
818b3f7
refactor(header, user-menu, deployment-logs): adjust UI layout and re…
RemiBonnet Mar 25, 2026
1654c3b
feat(devops-copilot): add diagnostic trigger for deployment error han…
RemiBonnet Mar 25, 2026
6a0ac2b
test(service-last-deployment): add mock for Link component and import…
RemiBonnet Mar 25, 2026
c070005
refactor(devops-copilot): update UI component styles and improve test…
RemiBonnet Mar 25, 2026
cd94de1
refactor(breadcrumbs): simplify route parameter handling in Breadcrum…
RemiBonnet Mar 25, 2026
94ec683
fix(message-list): update user message background class in tests
RemiBonnet Mar 25, 2026
f6ee9e6
fix(audit-logs): fix tokenization issues and small visual jumps when …
TheoGrandin74 Mar 25, 2026
22e853e
feat(environment): add version dropdown to env deployment details vie…
rmnbrd Mar 25, 2026
84bcb6a
fix(devops-copilot): attach copilot auth header (#2539)
RemiBonnet Mar 25, 2026
7ad74dd
fix(login): ensure safe redirection after authentication by validatin…
RemiBonnet Mar 25, 2026
e706962
Merge branch 'staging' into new-navigation
RemiBonnet Mar 26, 2026
81b45a4
feat(new-nav): add "Terraform configuration" settings section (#2540)
rmnbrd Mar 26, 2026
d33d798
feat(new-nav): add "Terraform configuration" settings section (#2540)
rmnbrd Mar 26, 2026
7192482
feat(service-access-modal): added "Access info" entry in the service …
TheoGrandin74 Mar 27, 2026
3303d7c
fix(deployment-logs): rendering history by service id not all from th…
RemiBonnet Mar 27, 2026
9ba2f2d
feat(new-nav): add "Terraform arguments" settings page (#2549)
rmnbrd Mar 27, 2026
dae43ac
feat(new-nav): add Terraform variables settings page (#2546)
rmnbrd Mar 27, 2026
148a56b
chore(new-nav): remove ScrollShadowWrapper usage (#2551)
rmnbrd Mar 27, 2026
91c594a
feat(service-avatar): reworking the service-avatar component for visu…
TheoGrandin74 Mar 27, 2026
7883e1d
fix(cluster-header-logs): add additional information (#2550)
RemiBonnet Mar 30, 2026
280a2ee
Merge branch 'staging' into new-navigation
rmnbrd Mar 31, 2026
0b4e5e1
Update outdated snapshot
rmnbrd Mar 31, 2026
c4d645a
Fix another outdated snapshots
rmnbrd Mar 31, 2026
94e2cfb
fix(new-nav): correct assets issue by downgrading vite-plugin-static-…
rmnbrd Apr 1, 2026
9d43735
fix(variable-list): replace service type by Service label (#2561)
RemiBonnet Apr 1, 2026
5aab27b
feat(service-terminal): enhance terminal functionality with quick act…
TheoGrandin74 Apr 1, 2026
865fd05
fix(ui): several fixes (#2559)
RemiBonnet Apr 1, 2026
be70bf2
fix(user-menu): replace Auth0 with custom auth hook (#2567)
RemiBonnet Apr 2, 2026
0c2311d
feat(new-nav): services list UI improvements (#2562)
rmnbrd Apr 2, 2026
61d01ee
feat(organization-overview): add favorites and fixes (#2569)
RemiBonnet Apr 3, 2026
08f0dc0
feat(not-found-page): implement component and integrate into routing …
RemiBonnet Apr 3, 2026
5996d9f
fix(new-nav): get rid of extra WS requests (#2572)
rmnbrd Apr 3, 2026
c44fcab
feat(helm): add creation flow (#2552)
RemiBonnet Apr 3, 2026
de5a53d
feat(new-nav): add "/latest" deployment route (#2555)
rmnbrd Apr 3, 2026
3ce3bac
feat(login): update login design (#2564)
TheoGrandin74 Apr 3, 2026
8b0ddd8
fix(login): adjust margin for improved layout on login page (#2573)
RemiBonnet Apr 3, 2026
e3f354e
fix(clusters): enhance cluster creation and installation guide UI (#2…
RemiBonnet Apr 3, 2026
c84b210
Merge branch 'staging' into new-navigation
rmnbrd Apr 3, 2026
933c1b9
fix(ci): remove useless test and fix login UI
RemiBonnet Apr 7, 2026
a7203f0
feat(new-nav): add "feedback" button (#2582)
rmnbrd Apr 8, 2026
c023c6c
Merge remote-tracking branch 'origin/staging' into new-navigation
RemiBonnet Apr 8, 2026
0890cf9
Merge remote-tracking branch 'refs/remotes/origin/new-navigation' int…
RemiBonnet Apr 8, 2026
ce870b5
feat(helm): add settings values override as file/arguments (#2577)
RemiBonnet Apr 8, 2026
cf7294b
fix(annotation-modal): add GATEWAY_API_ROUTES checkbox to annotation …
RemiBonnet Apr 8, 2026
751939f
Merge remote-tracking branch 'refs/remotes/origin/new-navigation' int…
RemiBonnet Apr 8, 2026
c5aabf6
feat(v5): add last deployment time to "last deployment" cell of servi…
rmnbrd Apr 8, 2026
5d43cb4
feat(eks-anywhere): add update at specif version for an EKSA cluster …
pggb25 Apr 8, 2026
c0e1e6b
Merge branch 'staging' into new-navigation
RemiBonnet Apr 9, 2026
ed785f4
fix(ui): project breadcrumb sort and loading btn issue login page (#2…
RemiBonnet Apr 9, 2026
cf769de
fix(accept-invitation): enhance UI and fix redirect issues (#2584)
RemiBonnet Apr 9, 2026
eb8c18a
feat(new-nav): add Helm networking settings view (#2554)
rmnbrd Apr 9, 2026
d19782f
feat(variable-modal): implement variable value editor modal and assoc…
RemiBonnet Apr 9, 2026
a8087c9
feat(organization-banners): add organization-specific banners for Qov…
RemiBonnet Apr 10, 2026
e1f4c7b
feat(v5): add "Job configuration" and "Triggers" settings sections (#…
rmnbrd Apr 10, 2026
6b73be1
feat(deployment): live elapsed time counter for ongoing deployments (…
acarranoqovery Apr 13, 2026
b4d252f
feat(logs): add Slack-like scroll UX to service, deployment, and clus…
acarranoqovery Apr 13, 2026
89901b8
Revert "feat(logs): add Slack-like scroll UX to service, deployment, …
acarranoqovery Apr 13, 2026
c6154a3
feat(eks-anywhere): add cluster backup configuration and hide extra t…
pggb25 Apr 13, 2026
4a561aa
fix(ui): several improvement (#2589)
RemiBonnet Apr 14, 2026
7b7ff67
fix(deployment-logs): refresh header and remove queud loader scroll (…
RemiBonnet Apr 14, 2026
5f9dd73
feat(actions): reduce confirmation friction (#2595)
RemiBonnet Apr 14, 2026
c8c7313
fix(ui): several improvement (#2597)
RemiBonnet Apr 14, 2026
3c63ba8
feat(logs): add Slack-like scroll UX to service, deployment and clust…
acarranoqovery Apr 15, 2026
3d64d60
feat(new-nav): add Terraform creation flow (#2596)
rmnbrd Apr 16, 2026
95c29bd
fix(page-settings): auto-select No Access when unchecking (#2600)
killiancolla Apr 16, 2026
3ce245f
feat(mcp-server): add MCP server settings route and component (#2604)
TheoGrandin74 Apr 20, 2026
7030450
chore(environement): Update environment call (#2607)
Astach Apr 20, 2026
3b3167a
fix(onboarding): add some fixes (#2601)
RemiBonnet Apr 20, 2026
17d6507
chore(dependencies): update axios to version 1.15.0 in package.json a…
RemiBonnet Apr 20, 2026
a9ae57f
Merge branch 'staging' into new-navigation
RemiBonnet Apr 21, 2026
a7c9367
fix(Overview): Add service count (#2612)
Astach Apr 21, 2026
c551af3
Merge branch 'staging' into new-navigation
RemiBonnet Apr 21, 2026
0dfd8fa
feat(user-settings): add console preference toggle to user-modal and …
RemiBonnet Apr 21, 2026
6a865a6
fix(ui): several improvement part 2 (#2609)
RemiBonnet Apr 21, 2026
c47f73d
feat(announcement-banner): enhance banner functionality with tooltip …
RemiBonnet Apr 22, 2026
76e2ccc
feat(new-nav): add creation flows for Jobs (#2605)
rmnbrd Apr 22, 2026
af3defa
fix(merge): branch 'staging' into new-navigation
RemiBonnet Apr 22, 2026
7c75e9c
feat(new-nav): add Dockerfile settings section (#2615)
rmnbrd Apr 22, 2026
0e9ac1e
feat(assistant): add component (#2603)
RemiBonnet Apr 23, 2026
864de06
fix(new-nav): remove deprecated checkRunningStatusClosed query and fi…
rmnbrd Apr 23, 2026
4e5a3d8
fix(new-nav): cluster mirroring registry data not loaded (#2623)
rmnbrd Apr 23, 2026
8e72415
fix(ui): several improvement part 3 (#2617)
RemiBonnet Apr 23, 2026
d49126f
fix(clusters): refine EKS Anywhere credentials and creation UI (#2602)
pggb25 Apr 23, 2026
df5ecdf
fix(new-nav): add missing buttons to env list (#2626)
rmnbrd Apr 23, 2026
affa33c
feat(audit-logs): fix z-index issue and update tests on audit logs (#…
TheoGrandin74 Apr 23, 2026
1aa7916
fix(ui): components design update (#2624)
TheoGrandin74 Apr 24, 2026
ae78f39
feat(new-nav): order database versions (#2628)
rmnbrd Apr 24, 2026
de07b78
feat(organization-overview): improve cluster summary (#2627)
RemiBonnet Apr 24, 2026
e2e198e
fix(new-nav): wrong redirection on logout (#2630)
rmnbrd Apr 24, 2026
d9adfb2
chore(console): remove legacy pages stack (#2631)
RemiBonnet Apr 27, 2026
680c7c8
chore(docker): update console app name in Dockerfile for consistency
RemiBonnet Apr 28, 2026
7f13056
fix(clusters): hide clusters installation popover on logs and creatio…
rmnbrd Apr 28, 2026
e527e3b
fix(organization): hide alerting into navigation (#2637)
RemiBonnet Apr 29, 2026
4ccc25f
chore(toast): migrate from react-hot-toast to sonner and remove share…
TheoGrandin74 Apr 29, 2026
715464b
Merge branch 'staging' into new-navigation
rmnbrd Apr 30, 2026
5efd8c8
feat(eksanywhere): hide unavailable cluster settings (#2642)
pggb25 Apr 30, 2026
598c863
feat(agents): add qovery-ui design skill system (#2639)
TheoGrandin74 Apr 30, 2026
e823e60
fix(monitoring): database dashboard (#2643)
RemiBonnet Apr 30, 2026
4ecb8a8
chore(mcp): remove mention of token query parameter
erebe Apr 30, 2026
676c401
fix(new-nav): env overview statuses glitch issue (#2644)
rmnbrd Apr 30, 2026
8d37c4f
fix(variables): redirection on variable creation conflict (#2636)
rmnbrd May 4, 2026
b3b67ea
fix(ui): add several feedback (#2646)
RemiBonnet May 4, 2026
440215a
fix(styles): update color references and improve UI consistency acros…
RemiBonnet May 4, 2026
48ecf22
fix(new-nav): fix keda cluster settings (#2650)
pggb25 May 4, 2026
585ce0d
fix(new-nav): look of the "ctrl k" button (#2653)
rmnbrd May 4, 2026
d9a7e6d
feat(cluster-status): add status in the service list, cluster/service…
RemiBonnet May 4, 2026
818685d
feat(changelog): update latest version
RemiBonnet May 4, 2026
0e3dab3
fix(dockerfile): skip NX cache during console build
RemiBonnet May 5, 2026
b976b45
feat(changelog): refine latest changelog entry and improve HTML parsi…
RemiBonnet May 5, 2026
b0790d5
feat(use-cases): add reusable bottom bar baseline
TheoGrandin74 Mar 23, 2026
20da253
refactor(root-layout): remove TanStackRouterDevtools for cleaner stru…
TheoGrandin74 Mar 23, 2026
94fe32d
fix(use-cases): resolve branch metadata from git in vite
TheoGrandin74 Mar 23, 2026
8cd1cab
fix(use-cases): port select styles for bottom bar use-case input
TheoGrandin74 Mar 23, 2026
5a0dab6
fix(use-cases): handle empty use case options in bottom bar
TheoGrandin74 Mar 24, 2026
b80ee3a
fix(use-cases): update styles for bottom bar input components
TheoGrandin74 Mar 24, 2026
f5b438f
feat(use-cases): implement UseCaseBottomBar and context for managing …
TheoGrandin74 Mar 9, 2026
af50902
feat(tailwind): add negativeInvert color tokens and update styles for…
TheoGrandin74 Mar 9, 2026
82d93d7
refactor(vite.config): remove Git branch resolution logic to simplify…
TheoGrandin74 Mar 9, 2026
ef6e0a6
feat(service-variables): enhance service variables management with ne…
TheoGrandin74 Mar 9, 2026
b23ffb3
feat(secret-managers): enhance secret manager options with type label…
TheoGrandin74 Mar 9, 2026
f248522
feat(environment-toolbar): add variant prop to MenuOtherActions and i…
TheoGrandin74 Mar 19, 2026
730b6b0
feat(secret-managers): integrate secret manager associated services a…
TheoGrandin74 Mar 19, 2026
f28e843
feat(step-addons): import SecretManagerOption type and enhance variab…
TheoGrandin74 Mar 20, 2026
03c0ab2
Rebase conflicts
TheoGrandin74 Mar 24, 2026
0b321b5
Fix bugs
TheoGrandin74 Mar 23, 2026
e4cee10
feat(variables-action-toolbar): add importEnvFileAccess prop to contr…
TheoGrandin74 Mar 23, 2026
8c35c9b
feat(secret-manager): correct automatic/assume roles behavior, add in…
TheoGrandin74 Mar 30, 2026
a41589f
refactor: clean up code formatting and improve readability in various…
TheoGrandin74 Mar 30, 2026
042295e
fix(create-update-variable-modal): update warning message and icon fo…
TheoGrandin74 Mar 30, 2026
511b03c
feat(use-case-context): implement UseCaseProvider and UseCaseBottomBa…
TheoGrandin74 May 5, 2026
cd19563
refactor(toast-messages): standardize toast message casing from 'SUCC…
TheoGrandin74 May 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
143 changes: 143 additions & 0 deletions .agents/skills/qovery-ui/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
---
name: qovery-ui
description: Design review and implementation guidance for the Qovery Console. Use for auditing UI components, refining spacing and color, selecting the right shared component, writing microcopy, and designing new surfaces from scratch.
---

# Qovery UI Skill

Design review and implementation guidance for the Qovery Console. Read `.claude/design.md` first for orientation.

---

## Core Design Principles

`.claude/design.md` is the source of truth — read it first. These are quick-reference reminders for agents running without that context.

**Colors:** Tailwind tokens only, never hardcoded. Status colors are semantic, never decorative. Brand violet on actionable controls only.
**Typography:** `text-sm` is the default. Two weights: 400 body, 500 anchors. Roboto Mono for tabular data. Max 3 sizes per surface.
**Spacing:** 4px grid. Variety creates hierarchy. Cards for distinct actionable content only — never nested.
**Components:** Shared component first, always. `<StatusChip>` for all system states. `<Button>` not `<ButtonPrimitive>`. `<Badge>` not `<Tag>`.
**Copy:** Technical but human. Button copy 1–3 words. Modal titles name the action. Address the user as "you."
**Motion:** Default is no motion. High-frequency actions never animate. Every animation needs a reason beyond aesthetics.
**Accessibility:** No color-only state. Focus rings never suppressed. Interactive icon-only controls always have `aria-label`.

---

## Commands

| Command | When to use |
| ---------------------- | ---------------------------------------------- |
| `/qovery-ui audit` | Full design review of a component or page |
| `/qovery-ui polish` | Targeted spacing, color, and rhythm refinement |
| `/qovery-ui component` | Find the right component or scaffold a new one |
| `/qovery-ui copy` | Review or write microcopy |
| `/qovery-ui motion` | Audit or add animation |
| `/qovery-ui craft` | Design something new from scratch |

---

## /audit

**Load:** `references/colors.md`, `references/spacing-layout.md`, `references/anti-patterns.md`, `references/accessibility.md`

Four-phase review. Label every finding:

- `[blocking]` — ships broken, violates semantic rules, or breaks accessibility
- `[important]` — degrades experience, likely to cause design review rejection
- `[nit]` — minor inconsistency, low impact

**Phase 1 — Token hygiene:** hardcoded values, legacy tokens, raw Tailwind palette classes used semantically.
**Phase 2 — Semantic color:** status colors used decoratively, color-only state, brand as page wash.
**Phase 3 — Spacing & density:** off-grid values, whitespace inflation, button height overrides.
**Phase 4 — Accessibility:** missing `aria-label`, suppressed focus ring, color-only status.

Output format — a single markdown table, one row per issue:

| Location | Severity | Issue | Fix |
| ------------------- | ------------- | --------------------------------------- | --------------------------------------------- |
| `ServiceRow.tsx:42` | `[blocking]` | `text-green-500` used for running state | Replace with `text-positive` |
| `Modal.tsx:18` | `[important]` | Modal title is "Settings" | Rename to the action: "Configure autoscaling" |
| `Card.tsx:9` | `[nit]` | `gap-5` off the 4px grid | Use `gap-4` or `gap-6` |

Finish with: total issues by severity.

---

## /polish

**Load:** `references/spacing-layout.md`, `references/colors.md`, `references/typography.md`, `references/anti-patterns.md`

Fix without changing functionality. Output a Before / After / Why table, one row per change:

| Before | After | Why |
| --------------------- | --------------------------------- | ---------------------------------------- |
| `p-5` | `p-4` | Off the 4px grid |
| `text-neutral-600` | `text-neutral-subtle` | Legacy token |
| No hover state on row | `hover:bg-surface-neutral-subtle` | Interactive elements need hover feedback |

---

## /component

**Load:** `references/components.md`

1. Identify if a shared component already exists — always prefer it
2. Return the import path and correct usage with props
3. If nothing fits, explain why before scaffolding new

---

## /copy

**Load:** `references/copy.md`

Review or generate microcopy. Output findings as a Before / After / Why table:

| Before | After | Why |
| ------------------- | -------------------------------------------- | ----------------------------------- |
| "An error occurred" | "Deploy failed. Check the logs for details." | States what happened + what to do |
| "ENVIRONMENT NAME" | "Environment name" | Sentence case |
| "Confirm" | "Delete environment" | Destructive buttons name the object |

---

## /motion

**Load:** `references/motion.md`

Ask first: how often will users see this? If the answer is "constantly," remove the animation. Otherwise, check easing and duration against the guide and output a Before / After / Why table.

---

## /craft

**Load:** `references/typography.md`, `references/spacing-layout.md`, `references/colors.md`, `references/components.md`, `references/copy.md`

Generative command — use when designing something new from scratch rather than reviewing existing work.

**Input:** describe what you're building. Include the user goal, the data or content being shown, and any known constraints (compact, read-heavy, action-dense).

**Output:** a structured design proposal with:

1. **Layout skeleton** — which primitives to reach for (card, table, modal, inline), rough visual hierarchy
2. **Component choices** — which shared components satisfy each UI need and why
3. **Typography** — size and weight choices per content level
4. **Color decisions** — which semantic tokens to use for each surface and state
5. **Copy suggestions** — headings, labels, CTAs, empty state

Output structured prose and a table for component choices. Do not output code. Flag any working memory concerns (>4 simultaneous choices) and suggest grouping or progressive disclosure where needed.

---

## Reference Files

| File | Contents |
| ------------------------------ | ------------------------------------------------------------------------------------ |
| `references/colors.md` | Token system, semantic rules, contrast, tonal scale |
| `references/typography.md` | Type scale, weights, Roboto Mono, typographic characters |
| `references/spacing-layout.md` | 4px grid, visual rhythm, layout compositions, optical alignment, working memory rule |
| `references/components.md` | Which component to use when |
| `references/copy.md` | Tone, microcopy patterns, modal titles, button copy rules |
| `references/motion.md` | Animation decision framework, easing, duration guide |
| `references/anti-patterns.md` | Match-and-refuse design bans |
| `references/accessibility.md` | Non-negotiables, ARIA, focus management |
82 changes: 82 additions & 0 deletions .agents/skills/qovery-ui/references/accessibility.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Accessibility — Qovery Console

## Non-Negotiables

These are blocking issues in design review. Every component must pass them.

1. **No color-only state.** Status, errors, and interactive states must combine color with an icon, text, or shape change.
2. **Visible focus ring on every interactive element.** The design system provides this via `focus-visible:outline-2`. Never suppress it.
3. **Icon-only controls have text alternatives.** The requirement depends on whether the element is interactive: **interactive controls** (buttons, links) always require `aria-label` — a tooltip alone is not sufficient because it doesn't provide an accessible name. **Non-interactive status icons** (decorative or informational): tooltip is sufficient as the text alternative.
4. **Keyboard navigation works without a mouse.** All interactive elements are reachable and operable via keyboard.

---

## Color-Only State — The Rule and Its Fixes

Users with color vision deficiencies can't distinguish red from green from gray. Every status signal must pair color with at least one other cue: an icon, a text label, or — when space is too tight for either — a tooltip.

**When space allows:** prefer icon + color, or text + color. Both are fully sufficient.
**When space is constrained** (e.g., a status column in a dense table): icon + color + tooltip is acceptable. The tooltip becomes the text alternative and must be present on both hover and keyboard focus.

| Pattern | Fix |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Red text error below a field | Keep the text — it's sufficient on its own. |
| A colored dot indicating running / stopped | Use `<StatusChip>` — it includes an icon SVG and has a built-in tooltip. |
| A green badge for "healthy" | `<Badge color="green">Healthy</Badge>` — the text carries meaning, color reinforces it. |
| A yellow border on a form to indicate "warning" | Add a `<Callout>` or a text hint — the border alone is invisible to some users. |
| An icon-only status in a tight table cell | Wrap in `<Tooltip>` with the status name as content — the tooltip is the accessible label. |

```tsx
// When you only have room for an icon, add a tooltip
<Tooltip content="Deployment failed">
<Icon iconStyle="solid" iconName="circle-xmark" className="text-negative" />
</Tooltip>
```

**StatusChip is the system's single source of truth for status.** It already bundles the icon, color, and tooltip — never create a custom colored indicator for deployment, build, or cluster state.

---

## Focus Management

| Situation | How to handle |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------- |
| Button or interactive control | `ButtonPrimitive` provides `focus-visible:outline-2` automatically. Never override with `focus:outline-none`. |
| Custom interactive element | Add `focus-visible:outline-2 focus-visible:outline-brand-strong` via Tailwind directly. |
| Modal or drawer | `<Modal>` traps focus via Radix Dialog. Don't build custom modals — they'll miss this. |
| Route change | TanStack Router handles scroll and focus reset. Don't suppress it. |

---

## ARIA

| Situation | What to do |
| --------------------------- | ------------------------------------------------------------------------------ |
| Icon-only button | `aria-label="Action name"` on the button |
| Button with tooltip | `<Tooltip>` handles `aria-describedby` — no manual wiring needed |
| Loading state | `aria-busy="true"` on the region being loaded |
| Error message below a field | `<InputText>` handles `aria-describedby` linking to the hint — don't bypass it |
| Expandable row or section | `aria-expanded={isExpanded}` on the trigger |
| Live status chip | `role="status"` if the value updates dynamically |
| Selectable list | Use Radix components — don't build custom `role="listbox"` |
| `<button>` element | No `role="button"` — it's redundant |
| Element with visible text | No `aria-label` — the text is sufficient |
| Interactive element | Never `aria-hidden="true"` — it removes it from keyboard navigation |

---

## Keyboard Navigation

### Minimum requirement

Every interactive element reachable by `Tab` key. Tab order follows visual order (left-to-right, top-to-bottom). No keyboard traps outside of intentional modal overlays.

### Dropdowns and menus

Use `<DropdownMenu>` — it inherits Radix's keyboard nav (arrows, Enter, Escape). Don't build custom dropdown menus; they won't handle keyboard correctly.

---

## Motion and Reduced Motion

Any decorative animation must include a `prefers-reduced-motion: reduce` fallback. See `references/motion.md` for patterns. Functional motion (e.g., focus indicator appearance) is exempt.
40 changes: 40 additions & 0 deletions .agents/skills/qovery-ui/references/anti-patterns.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Anti-Patterns — Qovery Console

Match-and-refuse. If you're about to do any of these, stop and redesign the element.

---

## Absolute Bans

**Side-stripe accent borders.**
A `border-left` or `border-right` thicker than 1px used as a colored highlight on a card, list item, callout, or alert. It signals hierarchy without creating it. Replace with a full border, a background tint, or nothing.

**Status colors used decoratively.**
Green for a "Pro" badge. Red to make a destructive section feel edgy. Yellow on a marketing callout. The four semantic colors — `positive`, `warning`, `negative`, `info` — communicate system state. The moment they appear elsewhere, users lose the ability to trust them. Use `neutral` or `brand` for anything that isn't a live status.

**Brand violet as a page wash.**
Covering a section, panel, or header in brand color to create visual emphasis. Brand violet is earned by interactive affordances and active states, not applied as decoration. Emphasis comes from hierarchy, not hue.

**Hardcoded color values.**
Any `#hex`, `rgb()`, or `rgba()` that isn't a CSS token. Breaks light/dark parity automatically. There is always a semantic token for the intended color — find it.

**Custom status indicators.**
A colored dot, a manually colored icon, a bespoke badge to represent deployment, build, or cluster state. `StatusChip` is the single source of truth for every known state. Custom indicators will be wrong, inconsistent, and inaccessible.

**Whitespace inflation.**
Padding added to make a surface feel "clean" or "premium" in a tool where users are scanning dense data. Whitespace serves legibility and hierarchy, not aesthetics. If removing half the padding doesn't break readability, it shouldn't be there.

**Modals as the first answer.**
A modal for a confirmation, a setting, a form, a detail view. Modals are the lazy path. First ask: can this be inline, in a side panel, in a page of its own, or in a popover? Reach for a modal only after exhausting those options. Never nest modals.

**Identical card grids.**
A grid of same-sized cards each containing icon + heading + description. It is the default AI-generated dashboard layout. If the content can be expressed as a table, a list, or a richer layout — it should be.

**The hero-metric block.**
A large number, a small label, with optional supporting stats and a gradient accent underneath. It's the SaaS dashboard cliché. Acceptable only when the metric is the primary reason a user opens the page.

**Emoji as icons.**
Random emoji in place of real iconography. Mixed emoji styles (flat + 3D + skeuomorphic) in the same surface. Emoji carry platform-specific rendering, inconsistent sizing, and no semantic meaning in a design system context. Use `<Icon>` from the FA Pro kit.

**Fake handwriting and forced authenticity.**
Script fonts used to signal warmth or humanity. "Made with ❤" footers. Tilted cards, taped-on aesthetics, or deliberate imperfection at scale. These patterns read as AI-generated cosplay of human design, not actual craft. Qovery's character comes from precision and calm, not performative personality.
Loading
Loading