diff --git a/CHANGELOG.md b/CHANGELOG.md index fd44cca..9dd0382 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,3 @@ -## Docker Agent Linux packaging extension (source-level changes) - -- Added independent `rustproxy-docker-agent` DEB/RPM build and signed APT/DNF publication to the external Package Builder; no FreeBSD `pkg` for the agent. -- Agent CLI now supports `init`, `info` (text/JSON, token redacted by default), `show-token`, `rotate-token`, `cert-init`, `print-fingerprint` and `version`; existing flags and default server invocation remain supported. -- Manual and package installation share token/certificate provisioning; upgrades preserve TLS files and existing tokens, while startup journals print only nonsecret connection and certificate metadata. - # Changelog Release history focused on **features, settings, default behavior, compatibility and fixes**. Changes to internal code structure and preliminary performance experiments are intentionally omitted. Historical descriptions reflect their respective releases; consult the current documentation for the settings available in 0.34.8. diff --git a/SHA256SUMS b/SHA256SUMS index 7d39f6a..6161cd3 100644 --- a/SHA256SUMS +++ b/SHA256SUMS @@ -2,7 +2,7 @@ 4140a2956264b44f259e6a37fc00ba02097bbe68b09296e04d3d243c1287129b .env.example 9e6356475bf587091bab72246ec9e325b498f7e48a6220e9a18baa50d0a385a6 .gitignore e9aa7d23f867dabab4b254154dc81833511138f7679ef7d0583afcdff2ff231e AGENTS.md -25add9aeb6f0e052c751380b6d81a42ef1704c093963ab1d119c6bdcd382e59e CHANGELOG.md +82fea9271a4c7a112334076c5c76b6bb2f354b362aef6fe7c7822d4477c50e6a CHANGELOG.md 3bce5792c1588ec7de8d97239d7e9e3304ce21eb76c619f48e6e62577c6cfac5 Cargo.lock 15821dc3b17d2da6d139b91a885269a817457d271fbeabb49c3d68bccc5efd22 Cargo.toml 25c7f3c8162cbf5cc156439774118a81dae9fdc52b611ec7e40c230fc99a772c Dockerfile @@ -37,7 +37,7 @@ f24767c2f9d4db4db5005b700d03323dd20f0a1d180ae939be4fe54a126aaf32 docs/CONFIGURA 80bcc666736b10f6202386d0342e8d6feeba858d77aea310bf3ec6de01c2bfb3 docs/CONTAINER.md dc670d912a6a946160c2f8528c9bb710ec38ebe406dcb7dcaf18fb2653f667b6 docs/CUSTOM_LOCATIONS.md 9fb2d0bcac70d1883dd16557622851a1f0527b3d3569a4b5177f5e6dedd3c74d docs/DASHBOARD.md -f8ea2daf22ea464121dc128aea5385f4bd413d66745714e9196cc3bff3520d61 docs/DOCKER_DISCOVERY.md +3e2f7670d136911c1b7bfe8571c60590932f74a60bcac308add4ccb0446bf970 docs/DOCKER_DISCOVERY.md f1baabe34e8a1b204d7c78e2f558c019c156b03adfa6ddecb931b4b8a5501f78 docs/INSTALL.md 37001cbf8ed248ca05ec40f12dd9876d33f6e0c97dcb21eb2e6f53c3d97a60bb docs/INTEGRATIONS.md 694cb7b15c5bbdc94cecd15dc516c05dcb3467849322cdd125b872d36dee4699 docs/LOGS.md @@ -220,7 +220,7 @@ a8afc6e70950bc70b98725eb049d73cff35dc3a3ee659229a15a8e08d3eb4f12 src/admin/web/ be9b78bee4ef0026608191d36a2aed831f93c1baaa5bc73da86bf09bc217ce76 src/admin/web/settings.js 8eadbada619b15087783dcfa0e889a81f88e78034d084c5ab616f7912b835940 src/admin/web/status_200.html 6feb1996b1caa9d19e0dc56eae7ca5b48b7e7cdf0a93bb2e4b527fb8f13a2fe5 src/admin/web/streams.js -80dce3464824590a92596a8df959ddc287df5158a068705caeb80abda4668b2d src/admin/web/style.css +38716fae968aeb8f6a8510f28bb9054a73a438a969c3b69f9c9d921acfed6e06 src/admin/web/style.css d290c048450655b3eeae7c6ec54a82d645d1965513694ab29fdf7eef796a1abd src/admin/web/traffic-panel.js dfb4ded2fefb90fc1e2d33370cdef10b040a85cb43235ea9dbc1d73bef823a79 src/admin/web/transform-panel.js a55f45dad5b540def419f8487161fb506b7e52744c76a5e661c7a5fa0a98a426 src/admin/web/vhosts/core.js diff --git a/src/admin/web/certificate-api.js b/src/admin/web/certificate-api.js index 835c934..41ff3b0 100644 --- a/src/admin/web/certificate-api.js +++ b/src/admin/web/certificate-api.js @@ -1,6 +1,4 @@ "use strict"; -// Credential management is separated from generic Settings to keep UI modules bounded. -// Only non-secret metadata is retained in client state. (() => { let certificateApiState = null, certificateApiLoading = false; let certificateApiEditingKey = null, certificateApiDetailsKey = null; diff --git a/src/admin/web/index.html b/src/admin/web/index.html index 70ce7f0..e426ffd 100644 --- a/src/admin/web/index.html +++ b/src/admin/web/index.html @@ -2211,22 +2211,43 @@ One byte range can be served from a complete cached object; multipart/unsupported ranges pass through.

- +
i
-

A browser Shift+F5 (no-cache, max-age=0 or Pragma: no-cache) uses a fresh cache HIT without replacing it or resetting Age.

-

Preserves client no-store, only-if-cached (504 on MISS; no origin contact or background refresh), min-fresh and max-stale (including max-stale=0 during grace); existing cookie rules, Authorization, Vary, PURGE/BAN, HOT/COLD and transformations stay active.

-

Origin no-cache with a validator remains revalidatable. If an explicit fallback TTL is set, public no-cache responses may instead be reused for that TTL, even without a validator. Private/no-store/Set-Cookie and Surrogate-Control: no-store remain blocked. Zero-TTL objects may be retained for stale-if-error or revalidation; explicit stale-while-revalidate=0 is respected.

-

Implicit grace (60 seconds by default, configurable below) only applies to eligible fresh-at-storage responses without an explicit stale-while-revalidate directive. Off restores strict client reload semantics. Changing the mode invalidates existing cached objects. This is not full Varnish VCL emulation.

+

A browser + Shift+F5 (no-cache, max-age=0 or Pragma: no-cache) uses a fresh + cache HIT without replacing it or resetting Age.

+

Preserves + client no-store, only-if-cached (504 on MISS; no origin contact or + background refresh), min-fresh and max-stale (including max-stale=0 + during grace); existing cookie rules, Authorization, Vary, + PURGE/BAN, HOT/COLD and transformations stay active.

+

Origin + no-cache with a validator remains revalidatable. If an explicit + fallback TTL is set, public no-cache responses may instead be reused + for that TTL, even without a validator. Private/no-store/Set-Cookie + and Surrogate-Control: no-store remain blocked. Zero-TTL objects may + be retained for stale-if-error or revalidation; explicit + stale-while-revalidate=0 is respected.

+

Implicit + grace (60 seconds by default, configurable below) only applies to + eligible fresh-at-storage responses without an explicit + stale-while-revalidate directive. Off restores strict client reload + semantics. Changing the mode invalidates existing cached objects. + This is not full Varnish VCL emulation.

- - + +
diff --git a/src/admin/web/style.css b/src/admin/web/style.css index 0c8374d..7a432bd 100644 --- a/src/admin/web/style.css +++ b/src/admin/web/style.css @@ -85,8 +85,7 @@ --ui-check-size: 15px; --ui-range-height: 18px; --mono: ui-monospace, SFMono-Regular, Consolas, monospace; - --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif -; + --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } html[data-theme=light] { @@ -135,8 +134,7 @@ html[data-theme=light] { --neutral-soft: rgba(70, 78, 72, .05); --scrollbar-track: #e7ece4; --scrollbar-thumb: #a9b5a6; - --scrollbar-thumb-hover: #879684 -; + --scrollbar-thumb-hover: #879684; } html:is([data-theme=light], [data-theme=cream]) { @@ -1245,7 +1243,7 @@ button.is-saving { } .nav span, - .version { + .version { display: none; } @@ -1270,7 +1268,7 @@ button.is-saving { } .breadcrumb span, - .login-footer span { + .login-footer span { margin: 0 5px; } @@ -1337,8 +1335,8 @@ button.is-saving { } .chart-footer, - .login-footer, - .page-footer { + .login-footer, + .page-footer { font-size: 8px; } @@ -2052,8 +2050,8 @@ td { } .breadcrumb b, - .nav span, - .topbar .version { + .nav span, + .topbar .version { display: none; } @@ -2157,7 +2155,7 @@ td { } .outline, - .primary { + .primary { white-space: normal; } @@ -2493,8 +2491,8 @@ td { } .vh-field input, - .vh-field select, - .vh-field textarea { + .vh-field select, + .vh-field textarea { font-size: 12px; } } @@ -2514,16 +2512,14 @@ body[data-density=dense] { --ui-gap: 4px; --ui-card: 7px; --ui-font: 11.5px; - --ui-control: 25px -; + --ui-control: 25px; } body[data-density=comfortable] { --ui-gap: 13px; --ui-card: 17px; --ui-font: 14px; - --ui-control: 36px -; + --ui-control: 36px; } .shell { @@ -3022,7 +3018,7 @@ html[data-button-style=compact] body { } .edition, - .sidebar-bottom { + .sidebar-bottom { display: none; } @@ -3084,8 +3080,8 @@ html[data-button-style=compact] body { } .page-label, - .page-source, - .vh-header-row>:nth-child(3) { + .page-source, + .vh-header-row>:nth-child(3) { grid-column: 1/-1; } @@ -3368,7 +3364,7 @@ body[data-density=dense] .stat strong { } .cache-toolbar select, - .cache-toolbar>* { + .cache-toolbar>* { max-width: 100%; } @@ -3664,8 +3660,9 @@ dialog .window-heading { } @media (max-width:640px) { + .acl-rule, - .basic-user { + .basic-user { grid-template-columns: 1fr 1fr; } @@ -3879,12 +3876,12 @@ dialog .window-heading { } .location-actions, - .location-toolbar { + .location-toolbar { align-items: stretch; } .location-actions>button, - .location-toolbar>button { + .location-toolbar>button { flex: 1 1 150px; } @@ -4048,8 +4045,8 @@ dialog .window-heading { } .location-preview-grid, - .vh-header-row.is-remove .vh-header-rule-fields, - .vh-header-rule-fields { + .vh-header-row.is-remove .vh-header-rule-fields, + .vh-header-rule-fields { grid-template-columns: 1fr; } } @@ -4251,8 +4248,9 @@ dialog .window-heading { } @media (max-width:720px) { + .logging-grid, - .traffic-chart-grid { + .traffic-chart-grid { grid-template-columns: 1fr; } @@ -4420,9 +4418,9 @@ dialog .window-heading { } #panel-notfound .card-heading, - #panel-redirects .card-heading, - #panel-vhosts .card-heading, - .backend-card-heading { + #panel-redirects .card-heading, + #panel-vhosts .card-heading, + .backend-card-heading { align-items: stretch; flex-direction: column; } @@ -4433,8 +4431,8 @@ dialog .window-heading { } #notfound-search, - #redirect-search, - #vhost-search { + #redirect-search, + #vhost-search { flex: 1 1 auto; width: auto; min-width: 0; @@ -4771,9 +4769,10 @@ dialog .window-heading { } @media (max-width:900px) { + .acl-profile-layout, - .logging-builder-layout, - .logging-format-actions { + .logging-builder-layout, + .logging-format-actions { grid-template-columns: 1fr; } @@ -4947,8 +4946,9 @@ dialog .window-heading { } @media (max-width:760px) { + .redirect-card .vhost-detail-strip, - .redirect-rule .vh-grid { + .redirect-rule .vh-grid { grid-template-columns: 1fr; } } @@ -5166,7 +5166,7 @@ dialog .window-heading { } .protocol-toggle-row .check, - .protocol-toggle-row .vh-check { + .protocol-toggle-row .vh-check { min-width: 0; } @@ -5457,18 +5457,18 @@ dialog .window-heading { } .docker-health-grid, - .docker-passive-health-editor .docker-health-grid, - .docker-route-grid { + .docker-passive-health-editor .docker-health-grid, + .docker-route-grid { grid-template-columns: 1fr; } .docker-passive-health-editor .docker-passive-5xx-warning, - .docker-passive-health-editor .docker-passive-slow-warning { + .docker-passive-health-editor .docker-passive-slow-warning { grid-column: auto; } .docker-agent-security, - .docker-toolbar { + .docker-toolbar { align-items: flex-start; flex-direction: column; } @@ -5632,15 +5632,17 @@ dialog .window-heading { } @media (max-width:1000px) { + .docker-acl-grid, - .docker-timeout-grid { + .docker-timeout-grid { grid-template-columns: 1fr 1fr; } } @media (max-width:760px) { + .docker-acl-grid, - .docker-timeout-grid { + .docker-timeout-grid { grid-template-columns: 1fr; } @@ -5878,8 +5880,9 @@ dialog .window-heading { } @media (prefers-reduced-motion: reduce) { + .docker-publish-field .docker-publish, - .docker-publish-field .docker-publish::before { + .docker-publish-field .docker-publish::before { transition: none; } } @@ -5939,8 +5942,8 @@ dialog .window-heading { } .docker-service-editor>summary, - .docker-service-head-actions, - .security-editor>summary { + .docker-service-head-actions, + .security-editor>summary { align-items: flex-start; flex-direction: column; } @@ -6507,14 +6510,15 @@ body[data-density=compact] .page-footer { } .docker-alias-field, - .docker-switch-row { + .docker-switch-row { grid-column: 1/-1; } } @media (max-width:760px) { + .docker-route-grid, - .transform-diagnostics { + .transform-diagnostics { grid-template-columns: 1fr; } @@ -6747,21 +6751,22 @@ body[data-density=compact] .page-footer { } @media (max-width:700px) { + #panel-tls .certificate-operation-heading, - #panel-tls .certificate-subheading, - #panel-tls .certificate-workspace-heading, - #panel-tls .renewal-entry-head { + #panel-tls .certificate-subheading, + #panel-tls .certificate-workspace-heading, + #panel-tls .renewal-entry-head { align-items: stretch; flex-direction: column; } #panel-tls .certificate-subheading>button, - #panel-tls .certificate-workspace-heading>button { + #panel-tls .certificate-workspace-heading>button { width: 100%; } #panel-tls .certificate-tabs, - #panel-tls .renewal-meta { + #panel-tls .renewal-meta { grid-template-columns: 1fr; } @@ -7272,8 +7277,9 @@ body[data-density=compact] .page-footer { } @media (max-width:760px) { + .certificate-api-credential-row, - .network-interface-row-head { + .network-interface-row-head { align-items: flex-start; } @@ -7661,7 +7667,7 @@ button.config-history-day.is-selected { } .mobile-menu-toggle:hover, - .mobile-menu-toggle[aria-expanded=true] { + .mobile-menu-toggle[aria-expanded=true] { color: var(--rp-nav-active-color); border-color: var(--rp-nav-active-color); background: var(--rp-nav-active-bg); @@ -8090,15 +8096,16 @@ button.config-history-day.is-selected { } @media (max-width:700px) { + .file-logs-heading-actions, - .file-logs-table-toolbar { + .file-logs-table-toolbar { align-items: stretch; flex-wrap: wrap; } .file-log-column-picker .log-column-options, - .file-log-field, - .file-logs-filter { + .file-log-field, + .file-logs-filter { grid-template-columns: 1fr; } @@ -9115,9 +9122,10 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } @media (max-width:900px) { + .acl-policy-custom-controls, - .acl-policy-modes, - .acl-profile-layout { + .acl-policy-modes, + .acl-profile-layout { grid-template-columns: 1fr; } @@ -9127,14 +9135,15 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } @media (max-width:640px) { + .acl-policy-preview-head, - .acl-policy-step-head { + .acl-policy-step-head { align-items: stretch; flex-direction: column; } .acl-policy-step-head>button, - .acl-policy-switch { + .acl-policy-switch { width: 100%; } } @@ -9364,7 +9373,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { overflow-y: auto; } -.cache-varnish-info .metric-info-popover .fine + .fine { +.cache-varnish-info .metric-info-popover .fine+.fine { margin-top: 8px; } @@ -9536,13 +9545,14 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } @media (max-width:700px) { + #file-log-view-counts, - #file-log-view-entries, - #panel-filelogs, - #panel-filelogs .file-log-field-grid, - #panel-filelogs .file-logs-table, - #panel-filelogs .file-logs-table-toolbar, - #panel-filelogs .file-logs-workspace { + #file-log-view-entries, + #panel-filelogs, + #panel-filelogs .file-log-field-grid, + #panel-filelogs .file-logs-table, + #panel-filelogs .file-logs-table-toolbar, + #panel-filelogs .file-logs-workspace { box-sizing: border-box; min-width: 0; max-width: 100%; @@ -9577,7 +9587,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } #panel-filelogs .file-log-aggregate-form, - #panel-filelogs .file-logs-filter { + #panel-filelogs .file-logs-filter { grid-template-columns: minmax(0, 1fr); } @@ -9586,11 +9596,11 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } #panel-filelogs .file-log-aggregate-form input, - #panel-filelogs .file-log-aggregate-form label, - #panel-filelogs .file-log-aggregate-form select, - #panel-filelogs .file-logs-filter input, - #panel-filelogs .file-logs-filter label, - #panel-filelogs .file-logs-filter select { + #panel-filelogs .file-log-aggregate-form label, + #panel-filelogs .file-log-aggregate-form select, + #panel-filelogs .file-logs-filter input, + #panel-filelogs .file-logs-filter label, + #panel-filelogs .file-logs-filter select { min-width: 0; max-width: 100%; } @@ -9619,7 +9629,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } #panel-filelogs .file-logs-table table, - #panel-filelogs .file-logs-table tbody { + #panel-filelogs .file-logs-table tbody { display: block; width: 100%; min-width: 0; @@ -9671,9 +9681,9 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } #panel-filelogs .file-logs-table td[data-mobile-column=event], - #panel-filelogs .file-logs-table td[data-mobile-column=status], - #panel-filelogs .file-logs-table td[data-mobile-column=time], - #panel-filelogs .file-logs-table td[data-mobile-column=vhost] { + #panel-filelogs .file-logs-table td[data-mobile-column=status], + #panel-filelogs .file-logs-table td[data-mobile-column=time], + #panel-filelogs .file-logs-table td[data-mobile-column=vhost] { color: var(--muted); font-size: 11px; } @@ -9780,7 +9790,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } #panel-filelogs .file-logs-table td[data-mobile-column=time], - #panel-filelogs .file-logs-table td[data-mobile-column=vhost] { + #panel-filelogs .file-logs-table td[data-mobile-column=vhost] { grid-column: 1/-1; } @@ -10142,7 +10152,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } #panel-overview .dashboard-overview-grid>.card:not(.pool-card), - #panel-overview .dashboard-overview-grid>.stat { + #panel-overview .dashboard-overview-grid>.stat { grid-column: span 2; } } @@ -10467,7 +10477,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline { } #panel-overview .dashboard-overview-grid.is-aligned>.card.overview-wide-chart, - #panel-overview .dashboard-overview-grid.is-aligned>.pool-card { + #panel-overview .dashboard-overview-grid.is-aligned>.pool-card { grid-column: 1/-1; } } @@ -11437,7 +11447,7 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty } #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="12"], - #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="6"] { + #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="6"] { grid-column: 1/-1; } } @@ -11448,10 +11458,10 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty } #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="12"], - #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="2"]:not(.stat), - #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="3"], - #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="4"], - #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="6"] { + #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="2"]:not(.stat), + #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="3"], + #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="4"], + #panel-overview .dashboard-overview-grid.is-aligned>[data-dashboard-widget][data-dashboard-span="6"] { grid-column: 1/-1; } } @@ -12220,13 +12230,14 @@ html[data-dashboard-density=ultra] #panel-overview .stat-cache-outcomes .cache-m } @media (max-width:760px) { + .docker-acl-grid .docker-profile-field, - .docker-agent-grid .docker-profile-field { + .docker-agent-grid .docker-profile-field { grid-column: auto; } .docker-agent-summary>span, - .docker-fingerprint { + .docker-fingerprint { width: 100%; } @@ -12386,7 +12397,7 @@ html[data-dashboard-density=ultra] #panel-overview .stat-cache-outcomes .cache-m } .vh-certificate-select-row>.vh-field, - .vh-certificate-select-row>button { + .vh-certificate-select-row>button { flex: 0 1 auto; width: 100%; } @@ -12434,14 +12445,15 @@ html[data-dashboard-density=ultra] #panel-overview .stat-cache-outcomes .cache-m } @media (max-width:600px) { + .stream-backend-section, - .web-service-setting-section { + .web-service-setting-section { padding: 10px; } .stream-backend-section>.vh-grid, - .stream-health-probe-fields, - .web-service-setting-section>.vh-grid { + .stream-health-probe-fields, + .web-service-setting-section>.vh-grid { grid-template-columns: minmax(0, 1fr); } } @@ -12536,7 +12548,7 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty } .docker-service-meta b, - .docker-service-meta span { + .docker-service-meta span { overflow-wrap: anywhere; } @@ -12578,7 +12590,7 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty gap: 6px; } - .docker-service-quick-actions > * { + .docker-service-quick-actions>* { flex: 0 0 auto; } @@ -12597,17 +12609,13 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty } } -html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-style=rounded], [data-corner-style=extra]) :is( - .nav, .file-log-tab, .vhost-backend-trigger, .backend-column-options, - .docker-service-quick-actions a, .docker-service-quick-actions button, - .docker-view-toggle, .provider-picker, .renewal-meta-item -) { +html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-style=rounded], [data-corner-style=extra]) :is(.nav, .file-log-tab, .vhost-backend-trigger, .backend-column-options, + .docker-service-quick-actions a, .docker-service-quick-actions button, + .docker-view-toggle, .provider-picker, .renewal-meta-item) { border-radius: var(--rp-radius-control) !important; } -html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-style=rounded], [data-corner-style=extra]) :is( - .backend-column-options, .renewal-meta-item -) { +html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-style=rounded], [data-corner-style=extra]) :is(.backend-column-options, .renewal-meta-item) { border-radius: var(--rp-radius-surface) !important; } @@ -12655,4 +12663,4 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty .backend-column-options { grid-template-columns: minmax(0, 1fr); } -} +} \ No newline at end of file