From 190e0895c090346a3804bc3f8a882dcf965d81d7 Mon Sep 17 00:00:00 2001 From: CallMeTechie <34693633+CallMeTechie@users.noreply.github.com> Date: Tue, 23 Jun 2026 11:35:18 +0200 Subject: [PATCH 1/2] =?UTF-8?q?fix(theme):=20Aurora=20parity=20=E2=80=94?= =?UTF-8?q?=20edit-modal=20tabs,=20routes=20buttons,=20GC=20contract,=20rd?= =?UTF-8?q?p-session?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aurora was missing several things ported from default/never lifted to the pro superset. This restores them: - Route-edit modal tabs never switched (and even 'general' was blank): aurora.css forced .edit-route-panel{display:none} and showed via a .active class, but the shared JS toggles panels by inline style.display (active = display:''→stylesheet). So every panel fell back to none. Fixed to not force display:none (keeps fade). - routes/ page was missing the 'Create service' (#btn-add-service) and 'Set up printer' (#open-printer-preset) buttons + the entire printer-preset wizard modal markup. Added all three (printer button auto-shows when gateway TCP routing is licensed, same as pro). - ROOT CAUSE for the dead printer wizard: aurora/layout.njk's window.GC block was copied from default and never updated to the pro superset — it injected only 1 of 6 license features (missing gateway_tcp_routing/scan_egress/l4_routes/http_routes/ browser_sessions) and was missing 33 GC.t keys (all printer_preset.*, common.close/ loading, rdp.badge.browser). Replaced with pro's full window.GC block. - aurora/pages/rdp-session.njk did not exist → opening a browser RDP session as an Aurora user 500'd (TemplateNotFound). Added it (pro body + aurora head: pro.css + aurora.css, data-theme + no-FOUC mode script, aurora fonts). Aurora-only. Verified with headless-chromium: tabs switch, service+printer modals open, rdp-session renders 200, aurora_theme.test 144/0. --- public/css/aurora.css | 7 +- templates/aurora/layout.njk | 45 +++- templates/aurora/pages/rdp-session.njk | 272 +++++++++++++++++++++++++ templates/aurora/pages/routes.njk | 37 ++++ 4 files changed, 357 insertions(+), 4 deletions(-) create mode 100644 templates/aurora/pages/rdp-session.njk diff --git a/public/css/aurora.css b/public/css/aurora.css index 7ca41891..8aa9c6b2 100644 --- a/public/css/aurora.css +++ b/public/css/aurora.css @@ -384,8 +384,11 @@ input[type=date]:focus, select:focus { .tabs.edit-route-tabs{border-bottom:0; gap:3px; background:var(--surface-3); border:1px solid var(--line); border-radius:10px; padding:3px} .tabs.edit-route-tabs .tab{padding:7px 12px; font-size:12.5px; border-radius:7px; border:0; margin:0} .tabs.edit-route-tabs .tab.active{background:var(--surface); color:var(--text); border:0} -.edit-route-panel{display:none} -.edit-route-panel.active{display:block; animation:fade .2s ease} +/* The shared route-edit JS toggles panels via inline style.display (showing the + active one with display:'' → falls back to the stylesheet). So the base must + NOT be display:none, or no panel ever shows. Inactive panels carry inline + display:none from the template; the fade runs each time one is revealed. */ +.edit-route-panel{animation:fade .2s ease} .toggle{width:42px;height:24px;border-radius:999px;background:var(--surface-3);border:1px solid var(--line-2);position:relative;cursor:pointer;transition:.2s; flex:0 0 auto} .toggle::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--muted);transition:.2s} diff --git a/templates/aurora/layout.njk b/templates/aurora/layout.njk index e1c7fe11..ae9ba825 100644 --- a/templates/aurora/layout.njk +++ b/templates/aurora/layout.njk @@ -44,7 +44,14 @@ csrfToken: '{{ csrfToken }}', language: '{{ language }}', baseUrl: '{{ baseUrl }}', - features: { gateway_lan_discovery_multi_subnet: {{ ('true' if license.features.gateway_lan_discovery_multi_subnet else 'false') | safe }} }, + features: { + gateway_lan_discovery_multi_subnet: {{ ('true' if license.features.gateway_lan_discovery_multi_subnet else 'false') | safe }}, + gateway_tcp_routing: {{ ('true' if license.features.gateway_tcp_routing else 'false') | safe }}, + gateway_scan_egress: {{ ('true' if license.features.gateway_scan_egress else 'false') | safe }}, + l4_routes: {{ license.features.l4_routes | default(0) }}, + http_routes: {{ license.features.http_routes | default(0) }}, + browser_sessions: {{ ('true' if license.hasFeature('browser_sessions') else 'false') | safe }} + }, t: { 'peers.no_peers': {{ t('peers.no_peers') | dump | safe }}, 'peers.online': {{ t('peers.online') | dump | safe }}, @@ -152,6 +159,7 @@ 'gateway_pools.select_none': {{ t('gateway_pools.select_none') | dump | safe }}, 'rdp.host_hint.default': {{ t('rdp.host_hint.default') | dump | safe }}, 'rdp.host_hint.gateway': {{ t('rdp.host_hint.gateway') | dump | safe }}, + 'rdp.badge.browser': {{ t('rdp.badge.browser') | dump | safe }}, 'routes.domain': {{ t('routes.domain') | dump | safe }}, 'routes.l4_sni_label': {{ t('routes.l4_sni_label') | dump | safe }}, 'routes.l4_sni_required_hint': {{ t('routes.l4_sni_required_hint') | dump | safe }}, @@ -339,7 +347,40 @@ 'autoupdate.setup_note': {{ t('autoupdate.setup_note') | dump | safe }}, 'autoupdate.ago_seconds': {{ t('autoupdate.ago_seconds') | dump | safe }}, 'autoupdate.ago_minutes': {{ t('autoupdate.ago_minutes') | dump | safe }}, - 'routes.suggested.unavailable': {{ t('routes.suggested.unavailable') | dump | safe }} + 'routes.suggested.unavailable': {{ t('routes.suggested.unavailable') | dump | safe }}, + 'common.close': {{ t('common.close') | dump | safe }}, + 'common.loading': {{ t('common.loading') | dump | safe }}, + 'printer_preset.title': {{ t('printer_preset.title') | dump | safe }}, + 'printer_preset.gateway': {{ t('printer_preset.gateway') | dump | safe }}, + 'printer_preset.printer_ip': {{ t('printer_preset.printer_ip') | dump | safe }}, + 'printer_preset.name': {{ t('printer_preset.name') | dump | safe }}, + 'printer_preset.adopt': {{ t('printer_preset.adopt') | dump | safe }}, + 'printer_preset.adopt_unsupported': {{ t('printer_preset.adopt_unsupported') | dump | safe }}, + 'printer_preset.adopt_not_enabled': {{ t('printer_preset.adopt_not_enabled') | dump | safe }}, + 'printer_preset.adopt_scanning': {{ t('printer_preset.adopt_scanning') | dump | safe }}, + 'printer_preset.adopt_none': {{ t('printer_preset.adopt_none') | dump | safe }}, + 'printer_preset.adopt_failed': {{ t('printer_preset.adopt_failed') | dump | safe }}, + 'printer_preset.adopt_active_hint': {{ t('printer_preset.adopt_active_hint') | dump | safe }}, + 'printer_preset.adopt_enable': {{ t('printer_preset.adopt_enable') | dump | safe }}, + 'printer_preset.adopt_enable_failed': {{ t('printer_preset.adopt_enable_failed') | dump | safe }}, + 'printer_preset.port_9100': {{ t('printer_preset.port_9100') | dump | safe }}, + 'printer_preset.port_631': {{ t('printer_preset.port_631') | dump | safe }}, + 'printer_preset.ews': {{ t('printer_preset.ews') | dump | safe }}, + 'printer_preset.ews_domain': {{ t('printer_preset.ews_domain') | dump | safe }}, + 'printer_preset.scan': {{ t('printer_preset.scan') | dump | safe }}, + 'printer_preset.vip': {{ t('printer_preset.vip') | dump | safe }}, + 'printer_preset.target_existing': {{ t('printer_preset.target_existing') | dump | safe }}, + 'printer_preset.target_new': {{ t('printer_preset.target_new') | dump | safe }}, + 'printer_preset.nas_ip': {{ t('printer_preset.nas_ip') | dump | safe }}, + 'printer_preset.nas_gateway': {{ t('printer_preset.nas_gateway') | dump | safe }}, + 'printer_preset.create': {{ t('printer_preset.create') | dump | safe }}, + 'printer_preset.scan_locked': {{ t('printer_preset.scan_locked') | dump | safe }}, + 'printer_preset.ews_locked': {{ t('printer_preset.ews_locked') | dump | safe }}, + 'printer_preset.save_failed': {{ t('printer_preset.save_failed') | dump | safe }}, + 'printer_preset.step_print': {{ t('printer_preset.step_print') | dump | safe }}, + 'printer_preset.step_scan': {{ t('printer_preset.step_scan') | dump | safe }}, + 'printer_preset.step_review': {{ t('printer_preset.step_review') | dump | safe }}, + 'printer_preset.step_device': {{ t('printer_preset.step_device') | dump | safe }} } }; diff --git a/templates/aurora/pages/rdp-session.njk b/templates/aurora/pages/rdp-session.njk new file mode 100644 index 00000000..4b344490 --- /dev/null +++ b/templates/aurora/pages/rdp-session.njk @@ -0,0 +1,272 @@ + + +
+ + + + + + + {# No-FOUC theme-mode pre-paint (matches aurora/layout.njk; nonce for CSP) #} + + + +