chore: theme updates, profile bug fix #3008

Merged
mfreeman451 merged 3 commits from refs/pull/3008/head into staging 2026-03-03 04:44:00 +00:00
mfreeman451 commented 2026-03-03 02:37:47 +00:00 (Migrated from github.com)
Owner

Imported from GitHub pull request.

Original GitHub pull request: #2982
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2982
Original created: 2026-03-03T02:37:47Z
Original updated: 2026-03-03T04:44:02Z
Original head: carverauto/serviceradar:chore/ui-update-styles
Original base: staging
Original merged: 2026-03-03T04:44:00Z by @mfreeman451

IMPORTANT: Please sign the Developer Certificate of Origin

Thank you for your contribution to ServiceRadar. Please note, when contributing, the developer must include
a DCO sign-off statement indicating the DCO acceptance in one commit message. Here
is an example DCO Signed-off-by line in a commit message:

Signed-off-by: J. Doe <j.doe@domain.com>

Describe your changes

Code checklist before requesting a review

  • I have signed the DCO?
  • The build completes without errors?
  • All tests are passing when running make test?
Imported from GitHub pull request. Original GitHub pull request: #2982 Original author: @mfreeman451 Original URL: https://github.com/carverauto/serviceradar/pull/2982 Original created: 2026-03-03T02:37:47Z Original updated: 2026-03-03T04:44:02Z Original head: carverauto/serviceradar:chore/ui-update-styles Original base: staging Original merged: 2026-03-03T04:44:00Z by @mfreeman451 --- ## IMPORTANT: Please sign the Developer Certificate of Origin Thank you for your contribution to ServiceRadar. Please note, when contributing, the developer must include a [DCO sign-off statement]( https://developercertificate.org/) indicating the DCO acceptance in one commit message. Here is an example DCO Signed-off-by line in a commit message: ``` Signed-off-by: J. Doe <j.doe@domain.com> ``` ## Describe your changes ## Issue ticket number and link ## Code checklist before requesting a review - [ ] I have signed the DCO? - [ ] The build completes without errors? - [ ] All tests are passing when running make test?
qodo-code-review[bot] commented 2026-03-03 02:38:15 +00:00 (Migrated from github.com)
Author
Owner

Imported GitHub PR comment.

Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2982#issuecomment-3988252654
Original created: 2026-03-03T02:38:15Z

Review Summary by Qodo

Implement dynamic theme switching and update to Nocturne color scheme

✨ Enhancement 🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Implement dynamic theme switching with dark/light mode support
  - Add MutationObserver to watch data-theme attribute changes
  - Add MediaQuery listener for system prefers-color-scheme preference
  - Create theme-aware color palettes (Nocturne dark and light)
• Update CSS color scheme from "United Blue" to "Nocturne" theme
  - Dark mode: neon cyberpunk accents (cyan, magenta, green)
  - Light mode: muted professional accents (sky-blue, emerald)
  - Add glow utilities for neon effects in dark mode
• Remove shadow-sm class from 40+ UI components for cleaner appearance
• Fix profile password validation to require current password confirmation
• Fix session timeout redirect to login page instead of profile settings
Diagram
flowchart LR
  A["Theme Detection<br/>data-theme attr<br/>prefers-color-scheme"] -->|MutationObserver| B["applyTheme()"]
  A -->|MediaQuery Listener| B
  B -->|Update State| C["Visual Palettes<br/>Dark/Light"]
  C -->|Apply Colors| D["Canvas & HUD<br/>Deck.gl Render"]
  E["CSS Variables<br/>Nocturne Theme"] -->|Light Mode| F["Sky-blue Accents"]
  E -->|Dark Mode| G["Neon Cyberpunk<br/>Cyan/Magenta/Green"]
  F -->|Clean| H["UI Components"]
  G -->|Glow Effects| H
Grey Divider

File Changes

1. elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_cleanup_dom_methods.js ✨ Enhancement +11/-0

Add theme observer cleanup on lifecycle unmount

elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_cleanup_dom_methods.js


2. elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_runtime_methods.js ✨ Enhancement +17/-0

Add theme watcher setup and applyTheme method binding

elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_runtime_methods.js


3. elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_state_defaults_methods.js ✨ Enhancement +71/-13

Define Nocturne color palettes and theme detection functions

elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_state_defaults_methods.js


View more (29)
4. elixir/web-ng/assets/js/lib/god_view/lifecycle_dom_setup_methods.js ✨ Enhancement +24/-10

Implement applyTheme method for dynamic theme switching

elixir/web-ng/assets/js/lib/god_view/lifecycle_dom_setup_methods.js


5. elixir/web-ng/assets/js/lib/god_view/rendering_tooltip_methods.js ✨ Enhancement +25/-34

Extract tooltip styling into theme-aware function

elixir/web-ng/assets/js/lib/god_view/rendering_tooltip_methods.js


6. elixir/serviceradar_core/lib/serviceradar/identity/user.ex 🐞 Bug fix +3/-1

Fix password validation to require current password

elixir/serviceradar_core/lib/serviceradar/identity/user.ex


7. elixir/web-ng/lib/serviceradar_web_ng_web/components/flow_stat_components.ex ✨ Enhancement +4/-4

Remove shadow-sm class from stat cards

elixir/web-ng/lib/serviceradar_web_ng_web/components/flow_stat_components.ex


8. elixir/web-ng/lib/serviceradar_web_ng_web/components/plugin_results.ex ✨ Enhancement +1/-1

Remove shadow-sm from widget container class

elixir/web-ng/lib/serviceradar_web_ng_web/components/plugin_results.ex


9. elixir/web-ng/lib/serviceradar_web_ng_web/components/query_builder_components.ex ✨ Enhancement +1/-1

Remove shadow-sm from query builder pill component

elixir/web-ng/lib/serviceradar_web_ng_web/components/query_builder_components.ex


10. elixir/web-ng/lib/serviceradar_web_ng_web/components/srql_components.ex ✨ Enhancement +1/-1

Remove shadow-sm from SRQL table container

elixir/web-ng/lib/serviceradar_web_ng_web/components/srql_components.ex


11. elixir/web-ng/lib/serviceradar_web_ng_web/components/ui_components.ex ✨ Enhancement +1/-1

Remove shadow-sm from ui_panel component

elixir/web-ng/lib/serviceradar_web_ng_web/components/ui_components.ex


12. elixir/web-ng/lib/serviceradar_web_ng_web/live/agent_live/show.ex ✨ Enhancement +5/-5

Remove shadow-sm from agent detail card components

elixir/web-ng/lib/serviceradar_web_ng_web/live/agent_live/show.ex


13. elixir/web-ng/lib/serviceradar_web_ng_web/live/alert_live/index.ex ✨ Enhancement +1/-1

Remove shadow-sm from alert status overview card

elixir/web-ng/lib/serviceradar_web_ng_web/live/alert_live/index.ex


14. elixir/web-ng/lib/serviceradar_web_ng_web/live/alert_live/show.ex ✨ Enhancement +3/-3

Remove shadow-sm from alert detail cards

elixir/web-ng/lib/serviceradar_web_ng_web/live/alert_live/show.ex


15. elixir/web-ng/lib/serviceradar_web_ng_web/live/analytics_live/index.ex ✨ Enhancement +2/-2

Remove shadow-sm from event and log widgets

elixir/web-ng/lib/serviceradar_web_ng_web/live/analytics_live/index.ex


16. elixir/web-ng/lib/serviceradar_web_ng_web/live/device_live/show.ex ✨ Enhancement +22/-22

Remove shadow-sm from 20+ device detail card components

elixir/web-ng/lib/serviceradar_web_ng_web/live/device_live/show.ex


17. elixir/web-ng/lib/serviceradar_web_ng_web/live/event_live/index.ex ✨ Enhancement +1/-1

Remove shadow-sm from event severity breakdown card

elixir/web-ng/lib/serviceradar_web_ng_web/live/event_live/index.ex


18. elixir/web-ng/lib/serviceradar_web_ng_web/live/event_live/show.ex ✨ Enhancement +3/-3

Remove shadow-sm from event detail cards

elixir/web-ng/lib/serviceradar_web_ng_web/live/event_live/show.ex


19. elixir/web-ng/lib/serviceradar_web_ng_web/live/gateway_live/show.ex ✨ Enhancement +4/-4

Remove shadow-sm from gateway detail card components

elixir/web-ng/lib/serviceradar_web_ng_web/live/gateway_live/show.ex


20. elixir/web-ng/lib/serviceradar_web_ng_web/live/interface_live/show.ex ✨ Enhancement +5/-5

Remove shadow-sm from interface detail cards

elixir/web-ng/lib/serviceradar_web_ng_web/live/interface_live/show.ex


21. elixir/web-ng/lib/serviceradar_web_ng_web/live/log_live/index.ex ✨ Enhancement +5/-5

Remove shadow-sm from log breakdown and observability cards

elixir/web-ng/lib/serviceradar_web_ng_web/live/log_live/index.ex


22. elixir/web-ng/lib/serviceradar_web_ng_web/live/log_live/show.ex ✨ Enhancement +5/-5

Remove shadow-sm from log detail and attribute cards

elixir/web-ng/lib/serviceradar_web_ng_web/live/log_live/show.ex


23. elixir/web-ng/lib/serviceradar_web_ng_web/live/netflow_live/dashboard.ex ✨ Enhancement +6/-6

Remove shadow-sm from netflow dashboard cards

elixir/web-ng/lib/serviceradar_web_ng_web/live/netflow_live/dashboard.ex


24. elixir/web-ng/lib/serviceradar_web_ng_web/live/netflow_live/visualize.ex ✨ Enhancement +3/-3

Remove shadow-sm from netflow visualization cards

elixir/web-ng/lib/serviceradar_web_ng_web/live/netflow_live/visualize.ex


25. elixir/web-ng/lib/serviceradar_web_ng_web/live/node_live/show.ex ✨ Enhancement +5/-5

Remove shadow-sm from node detail card components

elixir/web-ng/lib/serviceradar_web_ng_web/live/node_live/show.ex


26. elixir/web-ng/lib/serviceradar_web_ng_web/live/service_live/index.ex ✨ Enhancement +4/-4

Remove shadow-sm from service stat and card components

elixir/web-ng/lib/serviceradar_web_ng_web/live/service_live/index.ex


27. elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/auth_user_live/show.ex ✨ Enhancement +2/-2

Remove shadow-sm from profile and login history cards

elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/auth_user_live/show.ex


28. elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/auth_users_live.ex ✨ Enhancement +1/-1

Remove shadow-sm from user table card

elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/auth_users_live.ex


29. elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/networks_live/index.ex ✨ Enhancement +1/-1

Remove shadow-sm from inventory cleanup panel

elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/networks_live/index.ex


30. elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/rbac_live.ex ✨ Enhancement +1/-1

Remove shadow-sm from profile card component

elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/rbac_live.ex


31. elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex 🐞 Bug fix +5/-4

Fix session timeout redirect and error message

elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex


32. elixir/web-ng/assets/css/app.css ✨ Enhancement +133/-36

Update theme to Nocturne with neon dark mode and glow effects

elixir/web-ng/assets/css/app.css


Grey Divider

Qodo Logo

Imported GitHub PR comment. Original author: @qodo-code-review[bot] Original URL: https://github.com/carverauto/serviceradar/pull/2982#issuecomment-3988252654 Original created: 2026-03-03T02:38:15Z --- <h3>Review Summary by Qodo</h3> Implement dynamic theme switching and update to Nocturne color scheme <code>✨ Enhancement</code> <code>🐞 Bug fix</code> <img src="https://www.qodo.ai/wp-content/uploads/2025/11/light-grey-line.svg" height="10%" alt="Grey Divider"> <h3>Walkthroughs</h3> <details open> <summary>Description</summary> <br/> <pre> • Implement dynamic theme switching with dark/light mode support - Add MutationObserver to watch <b><i>data-theme</i></b> attribute changes - Add MediaQuery listener for system <b><i>prefers-color-scheme</i></b> preference - Create theme-aware color palettes (Nocturne dark and light) • Update CSS color scheme from &quot;United Blue&quot; to &quot;Nocturne&quot; theme - Dark mode: neon cyberpunk accents (cyan, magenta, green) - Light mode: muted professional accents (sky-blue, emerald) - Add glow utilities for neon effects in dark mode • Remove shadow-sm class from 40+ UI components for cleaner appearance • Fix profile password validation to require current password confirmation • Fix session timeout redirect to login page instead of profile settings </pre> </details> <details> <summary>Diagram</summary> <br/> > ```mermaid flowchart LR A["Theme Detection<br/>data-theme attr<br/>prefers-color-scheme"] -->|MutationObserver| B["applyTheme()"] A -->|MediaQuery Listener| B B -->|Update State| C["Visual Palettes<br/>Dark/Light"] C -->|Apply Colors| D["Canvas & HUD<br/>Deck.gl Render"] E["CSS Variables<br/>Nocturne Theme"] -->|Light Mode| F["Sky-blue Accents"] E -->|Dark Mode| G["Neon Cyberpunk<br/>Cyan/Magenta/Green"] F -->|Clean| H["UI Components"] G -->|Glow Effects| H ``` </details> <img src="https://www.qodo.ai/wp-content/uploads/2025/11/light-grey-line.svg" height="10%" alt="Grey Divider"> <h3>File Changes</h3> <details> <summary>1. elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_cleanup_dom_methods.js <code>✨ Enhancement</code> <code> +11/-0 </code> </summary> <br/> >Add theme observer cleanup on lifecycle unmount > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-e44ff90eae663378e355938676d4df345026647d84f244f64c03aef8cb2796ee'> elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_cleanup_dom_methods.js </a> <hr/> </details> <details> <summary>2. elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_runtime_methods.js <code>✨ Enhancement</code> <code> +17/-0 </code> </summary> <br/> >Add theme watcher setup and applyTheme method binding > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-3e673dd32f1bf9f77ba8197070cdc6b0755870128d17367437f6eb10e9ba483c'> elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_runtime_methods.js </a> <hr/> </details> <details> <summary>3. elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_state_defaults_methods.js <code>✨ Enhancement</code> <code> +71/-13 </code> </summary> <br/> >Define Nocturne color palettes and theme detection functions > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-49498b418277e7f81c0ab90fdf023ebf09b0c5e4cbf3228fe4533582cc4fa793'> elixir/web-ng/assets/js/lib/god_view/lifecycle_bootstrap_state_defaults_methods.js </a> <hr/> </details> <details><summary><ins><strong>View more (29)</strong></ins></summary><br/> <details> <summary>4. elixir/web-ng/assets/js/lib/god_view/lifecycle_dom_setup_methods.js <code>✨ Enhancement</code> <code> +24/-10 </code> </summary> <br/> >Implement applyTheme method for dynamic theme switching > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-7b88fcb183a776c3df89b3352962b5cc6164d2302a74d211fb3fe4df9776cdd7'> elixir/web-ng/assets/js/lib/god_view/lifecycle_dom_setup_methods.js </a> <hr/> </details> <details> <summary>5. elixir/web-ng/assets/js/lib/god_view/rendering_tooltip_methods.js <code>✨ Enhancement</code> <code> +25/-34 </code> </summary> <br/> >Extract tooltip styling into theme-aware function > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-b1bb8790f097597d140b2a2ec4cafd9f7d1c2e3f71af20b41b4501b693b40672'> elixir/web-ng/assets/js/lib/god_view/rendering_tooltip_methods.js </a> <hr/> </details> <details> <summary>6. elixir/serviceradar_core/lib/serviceradar/identity/user.ex <code>🐞 Bug fix</code> <code> +3/-1 </code> </summary> <br/> >Fix password validation to require current password > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-c9420769195b92ae85f0cf0f4eed8872c342663a45bf0a1f5ae3864a68d632e7'> elixir/serviceradar_core/lib/serviceradar/identity/user.ex </a> <hr/> </details> <details> <summary>7. elixir/web-ng/lib/serviceradar_web_ng_web/components/flow_stat_components.ex <code>✨ Enhancement</code> <code> +4/-4 </code> </summary> <br/> >Remove shadow-sm class from stat cards > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-b05d5e713704768eded2ba99d2049c27df89b9e2434da2b9a44a76537ba8eaf1'> elixir/web-ng/lib/serviceradar_web_ng_web/components/flow_stat_components.ex </a> <hr/> </details> <details> <summary>8. elixir/web-ng/lib/serviceradar_web_ng_web/components/plugin_results.ex <code>✨ Enhancement</code> <code> +1/-1 </code> </summary> <br/> >Remove shadow-sm from widget container class > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-3bd4d99912a9be0c6557786637636d184a1f8659e01ca6218828ca4e38e067b2'> elixir/web-ng/lib/serviceradar_web_ng_web/components/plugin_results.ex </a> <hr/> </details> <details> <summary>9. elixir/web-ng/lib/serviceradar_web_ng_web/components/query_builder_components.ex <code>✨ Enhancement</code> <code> +1/-1 </code> </summary> <br/> >Remove shadow-sm from query builder pill component > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-d154caec30c9776e0a03de752801d145864bb9d1f78e475b792fa5ed90d309ee'> elixir/web-ng/lib/serviceradar_web_ng_web/components/query_builder_components.ex </a> <hr/> </details> <details> <summary>10. elixir/web-ng/lib/serviceradar_web_ng_web/components/srql_components.ex <code>✨ Enhancement</code> <code> +1/-1 </code> </summary> <br/> >Remove shadow-sm from SRQL table container > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-4ec8d82b49e2deb73f4e3dc9aeb1bd12434977d091bdc27ce31ef0dff1d53beb'> elixir/web-ng/lib/serviceradar_web_ng_web/components/srql_components.ex </a> <hr/> </details> <details> <summary>11. elixir/web-ng/lib/serviceradar_web_ng_web/components/ui_components.ex <code>✨ Enhancement</code> <code> +1/-1 </code> </summary> <br/> >Remove shadow-sm from ui_panel component > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-313452f237254f4c3a4ccc750615c30f0f628f746d9d27a20691a8df207b449f'> elixir/web-ng/lib/serviceradar_web_ng_web/components/ui_components.ex </a> <hr/> </details> <details> <summary>12. elixir/web-ng/lib/serviceradar_web_ng_web/live/agent_live/show.ex <code>✨ Enhancement</code> <code> +5/-5 </code> </summary> <br/> >Remove shadow-sm from agent detail card components > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-a3956483069f5f6cb21a93fd2e45580f9143c795b0297b64aa77c705c5f5fe1d'> elixir/web-ng/lib/serviceradar_web_ng_web/live/agent_live/show.ex </a> <hr/> </details> <details> <summary>13. elixir/web-ng/lib/serviceradar_web_ng_web/live/alert_live/index.ex <code>✨ Enhancement</code> <code> +1/-1 </code> </summary> <br/> >Remove shadow-sm from alert status overview card > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-9666314e056ad53b0146eee5783361e41f00eedcdbb7cf4c930c243b78a2af40'> elixir/web-ng/lib/serviceradar_web_ng_web/live/alert_live/index.ex </a> <hr/> </details> <details> <summary>14. elixir/web-ng/lib/serviceradar_web_ng_web/live/alert_live/show.ex <code>✨ Enhancement</code> <code> +3/-3 </code> </summary> <br/> >Remove shadow-sm from alert detail cards > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-bfec808c6bf9add52a83af007477faf4388da970165ba2a2e357de1ff0a40557'> elixir/web-ng/lib/serviceradar_web_ng_web/live/alert_live/show.ex </a> <hr/> </details> <details> <summary>15. elixir/web-ng/lib/serviceradar_web_ng_web/live/analytics_live/index.ex <code>✨ Enhancement</code> <code> +2/-2 </code> </summary> <br/> >Remove shadow-sm from event and log widgets > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-ee008fe2b55f4a8443281692cbfd8269f679236499246beb83a39fa497353ca6'> elixir/web-ng/lib/serviceradar_web_ng_web/live/analytics_live/index.ex </a> <hr/> </details> <details> <summary>16. elixir/web-ng/lib/serviceradar_web_ng_web/live/device_live/show.ex <code>✨ Enhancement</code> <code> +22/-22 </code> </summary> <br/> >Remove shadow-sm from 20+ device detail card components > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-44e1802aef19a1badfee332ded1bfa0e83fe2da9340d6ce61fbb5c00d0b055c8'> elixir/web-ng/lib/serviceradar_web_ng_web/live/device_live/show.ex </a> <hr/> </details> <details> <summary>17. elixir/web-ng/lib/serviceradar_web_ng_web/live/event_live/index.ex <code>✨ Enhancement</code> <code> +1/-1 </code> </summary> <br/> >Remove shadow-sm from event severity breakdown card > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-d97135e610332821ac90b3df24b9cce571da4fe5bbf38e46fbb4f9d90f71b646'> elixir/web-ng/lib/serviceradar_web_ng_web/live/event_live/index.ex </a> <hr/> </details> <details> <summary>18. elixir/web-ng/lib/serviceradar_web_ng_web/live/event_live/show.ex <code>✨ Enhancement</code> <code> +3/-3 </code> </summary> <br/> >Remove shadow-sm from event detail cards > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-88ef5042ae69a7886e2c7e03c451ecebab766a373c13cc4b538a2a96de081f02'> elixir/web-ng/lib/serviceradar_web_ng_web/live/event_live/show.ex </a> <hr/> </details> <details> <summary>19. elixir/web-ng/lib/serviceradar_web_ng_web/live/gateway_live/show.ex <code>✨ Enhancement</code> <code> +4/-4 </code> </summary> <br/> >Remove shadow-sm from gateway detail card components > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-bf0cc4b62f0dcfeb982b7d18c7366ff22af39b9832a2ec57e3e50001cd3ff7b8'> elixir/web-ng/lib/serviceradar_web_ng_web/live/gateway_live/show.ex </a> <hr/> </details> <details> <summary>20. elixir/web-ng/lib/serviceradar_web_ng_web/live/interface_live/show.ex <code>✨ Enhancement</code> <code> +5/-5 </code> </summary> <br/> >Remove shadow-sm from interface detail cards > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-fe2c15abccf354877a7756570a56b2bf36bfd20af11d4b42fc084a6ff1543c6b'> elixir/web-ng/lib/serviceradar_web_ng_web/live/interface_live/show.ex </a> <hr/> </details> <details> <summary>21. elixir/web-ng/lib/serviceradar_web_ng_web/live/log_live/index.ex <code>✨ Enhancement</code> <code> +5/-5 </code> </summary> <br/> >Remove shadow-sm from log breakdown and observability cards > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-512a69603665aa57f9eb038138146be72696ba382c2a7438742b599a4d0f0e8f'> elixir/web-ng/lib/serviceradar_web_ng_web/live/log_live/index.ex </a> <hr/> </details> <details> <summary>22. elixir/web-ng/lib/serviceradar_web_ng_web/live/log_live/show.ex <code>✨ Enhancement</code> <code> +5/-5 </code> </summary> <br/> >Remove shadow-sm from log detail and attribute cards > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-6ebd193f4add1e5d214a8da7746bb4bcb8dfea993cb80c4de1936a466bacd5ce'> elixir/web-ng/lib/serviceradar_web_ng_web/live/log_live/show.ex </a> <hr/> </details> <details> <summary>23. elixir/web-ng/lib/serviceradar_web_ng_web/live/netflow_live/dashboard.ex <code>✨ Enhancement</code> <code> +6/-6 </code> </summary> <br/> >Remove shadow-sm from netflow dashboard cards > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-f95dbbfe0aa66b51828fc3f5f754a2f93f517df4cb52a4b4586e22d9bb4591bb'> elixir/web-ng/lib/serviceradar_web_ng_web/live/netflow_live/dashboard.ex </a> <hr/> </details> <details> <summary>24. elixir/web-ng/lib/serviceradar_web_ng_web/live/netflow_live/visualize.ex <code>✨ Enhancement</code> <code> +3/-3 </code> </summary> <br/> >Remove shadow-sm from netflow visualization cards > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-16847cfcfc8b5aea4a7c6a187d9d2d7157efab444bf5988906096ed74dc81681'> elixir/web-ng/lib/serviceradar_web_ng_web/live/netflow_live/visualize.ex </a> <hr/> </details> <details> <summary>25. elixir/web-ng/lib/serviceradar_web_ng_web/live/node_live/show.ex <code>✨ Enhancement</code> <code> +5/-5 </code> </summary> <br/> >Remove shadow-sm from node detail card components > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-a994311da58b808632fca4bbb0d123f0466ac21771f2f092c290fe4e8469b13a'> elixir/web-ng/lib/serviceradar_web_ng_web/live/node_live/show.ex </a> <hr/> </details> <details> <summary>26. elixir/web-ng/lib/serviceradar_web_ng_web/live/service_live/index.ex <code>✨ Enhancement</code> <code> +4/-4 </code> </summary> <br/> >Remove shadow-sm from service stat and card components > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-3303b1317cf863bf61d79ec5dd2e13dcbc57d0efaa158027ee522867a14961f5'> elixir/web-ng/lib/serviceradar_web_ng_web/live/service_live/index.ex </a> <hr/> </details> <details> <summary>27. elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/auth_user_live/show.ex <code>✨ Enhancement</code> <code> +2/-2 </code> </summary> <br/> >Remove shadow-sm from profile and login history cards > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-1bce2df6f86a2fb3e95e42694f06bc5820f179ed66fedb18df7eed520d4704a9'> elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/auth_user_live/show.ex </a> <hr/> </details> <details> <summary>28. elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/auth_users_live.ex <code>✨ Enhancement</code> <code> +1/-1 </code> </summary> <br/> >Remove shadow-sm from user table card > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-be1107659d426373e406bfb0f3115371405cb3d631edff14fbd5fbee9f91d404'> elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/auth_users_live.ex </a> <hr/> </details> <details> <summary>29. elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/networks_live/index.ex <code>✨ Enhancement</code> <code> +1/-1 </code> </summary> <br/> >Remove shadow-sm from inventory cleanup panel > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-f013f3501a2fa2f6d451c632a9c3fab35491171275db26597ac3c3d2e8cee481'> elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/networks_live/index.ex </a> <hr/> </details> <details> <summary>30. elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/rbac_live.ex <code>✨ Enhancement</code> <code> +1/-1 </code> </summary> <br/> >Remove shadow-sm from profile card component > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-37dbabdcbf11effc4fd0b87a85c10953c1fa85d014620514f18248a47c25de5d'> elixir/web-ng/lib/serviceradar_web_ng_web/live/settings/rbac_live.ex </a> <hr/> </details> <details> <summary>31. elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex <code>🐞 Bug fix</code> <code> +5/-4 </code> </summary> <br/> >Fix session timeout redirect and error message > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-a08d672598c29bca9e7adc0a457bb0b60ce51730efde43b480551662681cd0bd'> elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex </a> <hr/> </details> <details> <summary>32. elixir/web-ng/assets/css/app.css <code>✨ Enhancement</code> <code> +133/-36 </code> </summary> <br/> >Update theme to Nocturne with neon dark mode and glow effects > ><a href='https://github.com/carverauto/serviceradar/pull/2982/files#diff-e764ac9c51c5322e453d34626027fbc055903829693f09b826c914ac3c2e7709'> elixir/web-ng/assets/css/app.css </a> <hr/> </details> </details> <img src="https://www.qodo.ai/wp-content/uploads/2025/11/light-grey-line.svg" height="10%" alt="Grey Divider"> <a href="https://www.qodo.ai"><img src="https://www.qodo.ai/wp-content/uploads/2025/03/qodo-logo.svg" width="80" alt="Qodo Logo"></a>
qodo-code-review[bot] commented 2026-03-03 02:38:16 +00:00 (Migrated from github.com)
Author
Owner

Imported GitHub PR comment.

Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2982#issuecomment-3988252707
Original created: 2026-03-03T02:38:16Z

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider
Remediation recommended
1. Blank password misclassified 🐞 Bug ✓ Correctness
Description
For users with a password, submitting an empty current_password will fall through to bcrypt
verification and return “is incorrect” instead of a required-field error, which is confusing and
does unnecessary work.
Code

elixir/serviceradar_core/lib/serviceradar/identity/user.ex[R226-231]

+          is_nil(current_password) ->
+            {:error, field: :current_password, message: "is required"}
+
          Bcrypt.verify_pass(current_password, user.hashed_password) ->
            :ok

Evidence
The validator only checks for nil, not empty/blank strings, so "" will be handled by the bcrypt
branch and produce the “incorrect” error message.

elixir/serviceradar_core/lib/serviceradar/identity/user.ex[207-234]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`update_email` only checks `is_nil(current_password)`, so an empty string (common from form posts) is validated as “incorrect” rather than “required”.

### Issue Context
This is in the `ServiceRadar.Identity.User` Ash resource action `:update_email` validation.

### Fix Focus Areas
- elixir/serviceradar_core/lib/serviceradar/identity/user.ex[207-235]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Sudo return_to inconsistent 🐞 Bug ⛯ Reliability
Description
The sudo-mode plug now stores conn.request_path (no query string) and does so for all HTTP
methods, diverging from the existing maybe_store_return_to/1 behavior; this can cause users to
return to a less precise location (or an unsafe/non-GET endpoint) after re-authentication.
Code

elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[R546-549]

+      |> put_session(:user_return_to, conn.request_path)
+      |> put_flash(:error, "Session expired. Please sign in again to access account settings.")
+      |> redirect(to: ~p"/users/log-in")
      |> halt()
Evidence
Elsewhere in the same module, return-to storage is intentionally limited to GET requests and uses
current_path(conn) (commonly used to preserve path + query). The new sudo-mode branch stores only
request_path and does not guard on method.

elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[515-517]
elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[534-550]
elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[34-37]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`require_sudo_mode/2` stores `:user_return_to` using `conn.request_path` and without a method guard, which is inconsistent with existing return-to handling and can degrade post-login redirects.

### Issue Context
This logic runs when sudo-mode has expired and we redirect the user to sign in again.

### Fix Focus Areas
- elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[515-550]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider
ⓘ The new review experience is currently in Beta. Learn more
Grey Divider

Qodo Logo

Imported GitHub PR comment. Original author: @qodo-code-review[bot] Original URL: https://github.com/carverauto/serviceradar/pull/2982#issuecomment-3988252707 Original created: 2026-03-03T02:38:16Z --- <h3>Code Review by Qodo</h3> <code>🐞 Bugs (2)</code> <code>📘 Rule violations (0)</code> <code>📎 Requirement gaps (0)</code> <img src="https://www.qodo.ai/wp-content/uploads/2025/11/light-grey-line.svg" height="10%" alt="Grey Divider"> <br/> <img src="https://www.qodo.ai/wp-content/uploads/2026/01/review-recommended.png" height="20" alt="Remediation recommended"> <details> <summary> 1. Blank password misclassified <code>🐞 Bug</code> <code>✓ Correctness</code></summary> <br/> > <details open> ><summary>Description</summary> ><br/> > ><pre> >For users with a password, submitting an empty current_password will fall through to bcrypt >verification and return “is incorrect” instead of a required-field error, which is confusing and >does unnecessary work. ></pre> ></details> > <details open> ><summary>Code</summary> ><br/> > ><code>[elixir/serviceradar_core/lib/serviceradar/identity/user.ex[R226-231]](https://github.com/carverauto/serviceradar/pull/2982/files#diff-c9420769195b92ae85f0cf0f4eed8872c342663a45bf0a1f5ae3864a68d632e7R226-R231)</code> > >```diff >+ is_nil(current_password) -> >+ {:error, field: :current_password, message: "is required"} >+ > Bcrypt.verify_pass(current_password, user.hashed_password) -> > :ok > >``` ></details> > <details > ><summary>Evidence</summary> ><br/> > ><pre> >The validator only checks for nil, not empty/blank strings, so &quot;&quot; will be handled by the bcrypt >branch and produce the “incorrect” error message. ></pre> > > <code>[elixir/serviceradar_core/lib/serviceradar/identity/user.ex[207-234]](https://github.com/carverauto/serviceradar/blob/658e6cde551c1140b0d0196b064521dcc41f7c26/elixir/serviceradar_core/lib/serviceradar/identity/user.ex/#L207-L234)</code> ></details> > <details> ><summary>Agent prompt</summary> ><br/> > >``` >The issue below was found during a code review. Follow the provided context and guidance below and implement a solution > >### Issue description >`update_email` only checks `is_nil(current_password)`, so an empty string (common from form posts) is validated as “incorrect” rather than “required”. > >### Issue Context >This is in the `ServiceRadar.Identity.User` Ash resource action `:update_email` validation. > >### Fix Focus Areas >- elixir/serviceradar_core/lib/serviceradar/identity/user.ex[207-235] >``` > <code>ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools</code> ></details> <hr/> </details> <details> <summary> 2. Sudo return_to inconsistent <code>🐞 Bug</code> <code>⛯ Reliability</code></summary> <br/> > <details open> ><summary>Description</summary> ><br/> > ><pre> >The sudo-mode plug now stores <b><i>conn.request_path</i></b> (no query string) and does so for all HTTP >methods, diverging from the existing <b><i>maybe_store_return_to/1</i></b> behavior; this can cause users to >return to a less precise location (or an unsafe/non-GET endpoint) after re-authentication. ></pre> ></details> > <details open> ><summary>Code</summary> ><br/> > ><code>[elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[R546-549]](https://github.com/carverauto/serviceradar/pull/2982/files#diff-a08d672598c29bca9e7adc0a457bb0b60ce51730efde43b480551662681cd0bdR546-R549)</code> > >```diff >+ |> put_session(:user_return_to, conn.request_path) >+ |> put_flash(:error, "Session expired. Please sign in again to access account settings.") >+ |> redirect(to: ~p"/users/log-in") > |> halt() >``` ></details> > <details > ><summary>Evidence</summary> ><br/> > ><pre> >Elsewhere in the same module, return-to storage is intentionally limited to GET requests and uses ><b><i>current_path(conn)</i></b> (commonly used to preserve path + query). The new sudo-mode branch stores only ><b><i>request_path</i></b> and does not guard on method. ></pre> > > <code>[elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[515-517]](https://github.com/carverauto/serviceradar/blob/658e6cde551c1140b0d0196b064521dcc41f7c26/elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex/#L515-L517)</code> > <code>[elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[534-550]](https://github.com/carverauto/serviceradar/blob/658e6cde551c1140b0d0196b064521dcc41f7c26/elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex/#L534-L550)</code> > <code>[elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[34-37]](https://github.com/carverauto/serviceradar/blob/658e6cde551c1140b0d0196b064521dcc41f7c26/elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex/#L34-L37)</code> ></details> > <details> ><summary>Agent prompt</summary> ><br/> > >``` >The issue below was found during a code review. Follow the provided context and guidance below and implement a solution > >### Issue description >`require_sudo_mode/2` stores `:user_return_to` using `conn.request_path` and without a method guard, which is inconsistent with existing return-to handling and can degrade post-login redirects. > >### Issue Context >This logic runs when sudo-mode has expired and we redirect the user to sign in again. > >### Fix Focus Areas >- elixir/web-ng/lib/serviceradar_web_ng_web/user_auth.ex[515-550] >``` > <code>ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools</code> ></details> <hr/> </details> <img src="https://www.qodo.ai/wp-content/uploads/2025/11/light-grey-line.svg" height="10%" alt="Grey Divider"> <pre>ⓘ The new review experience is currently in Beta. <a href="https://docs.qodo.ai/qodo-documentation/code-review">Learn more</a></pre> <img src="https://www.qodo.ai/wp-content/uploads/2025/11/light-grey-line.svg" height="10%" alt="Grey Divider"> <!-- https://github.com/carverauto/serviceradar/commit/658e6cde551c1140b0d0196b064521dcc41f7c26 --> <a href="https://www.qodo.ai"><img src="https://www.qodo.ai/wp-content/uploads/2025/03/qodo-logo.svg" width="80" alt="Qodo Logo"></a>
qodo-code-review[bot] commented 2026-03-03 04:17:24 +00:00 (Migrated from github.com)
Author
Owner

Imported GitHub PR comment.

Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2982#issuecomment-3988551358
Original created: 2026-03-03T04:17:24Z

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: build

Failed stage: Configure SRQL fixture database for tests []

Failed test name: ""

Failure summary:

The action failed because a required secret/env var for the SRQL TLS test fixture was not
configured:
- The workflow exited with code 1 after printing: SRQL_TEST_DATABASE_CA_CERT secret must
be configured to verify SRQL fixture TLS. (log lines 707-708).
- The environment shows
SRQL_TEST_DATABASE_CA_CERT: is empty, so the step intentionally aborted.

A separate issue happened during post-job cleanup, but it did not cause the job failure:
- git
submodule foreach --recursive failed with fatal: No url found for submodule path
'swift/FieldSurvey/LocalPackages/arrow-swift' in .gitmodules (exit code 128, log lines 718-719),
emitted as a warning.

Relevant error logs:
1:  Runner name: 'arc-runner-set-hk6mk-runner-nwj2p'
2:  Runner group name: 'Default'
...

139:  ^[[36;1mif command -v apt-get >/dev/null 2>&1; then^[[0m
140:  ^[[36;1m  sudo apt-get update^[[0m
141:  ^[[36;1m  sudo apt-get install -y build-essential pkg-config libssl-dev protobuf-compiler cmake flex bison^[[0m
142:  ^[[36;1melif command -v dnf >/dev/null 2>&1; then^[[0m
143:  ^[[36;1m  sudo dnf install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m
144:  ^[[36;1melif command -v yum >/dev/null 2>&1; then^[[0m
145:  ^[[36;1m  sudo yum install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m
146:  ^[[36;1melif command -v microdnf >/dev/null 2>&1; then^[[0m
147:  ^[[36;1m  sudo microdnf install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m
148:  ^[[36;1melse^[[0m
149:  ^[[36;1m  echo "Unsupported package manager; please install gcc, g++ (or clang), make, OpenSSL headers, pkg-config, and protoc manually." >&2^[[0m
150:  ^[[36;1m  exit 1^[[0m
151:  ^[[36;1mfi^[[0m
152:  ^[[36;1m^[[0m
153:  ^[[36;1mensure_pkg_config^[[0m
154:  ^[[36;1mprotoc --version || (echo "protoc installation failed" && exit 1)^[[0m
155:  shell: /usr/bin/bash -e {0}
...

387:  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
388:  env:
389:  BUILDBUDDY_ORG_API_KEY: ***
390:  SRQL_TEST_DATABASE_URL: ***
391:  SRQL_TEST_ADMIN_URL: ***
392:  SRQL_TEST_DATABASE_CA_CERT: 
393:  DOCKERHUB_USERNAME: ***
394:  DOCKERHUB_TOKEN: ***
395:  TEST_CNPG_DATABASE: serviceradar_web_ng_test
396:  INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp
397:  INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir
398:  ##[endgroup]
399:  ##[group]Run : install rustup if needed
400:  ^[[36;1m: install rustup if needed^[[0m
401:  ^[[36;1mif ! command -v rustup &>/dev/null; then^[[0m
402:  ^[[36;1m  curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://sh.rustup.rs | sh -s -- --default-toolchain none -y^[[0m
403:  ^[[36;1m  echo "$CARGO_HOME/bin" >> $GITHUB_PATH^[[0m
...

543:  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
544:  env:
545:  BUILDBUDDY_ORG_API_KEY: ***
546:  SRQL_TEST_DATABASE_URL: ***
547:  SRQL_TEST_ADMIN_URL: ***
548:  SRQL_TEST_DATABASE_CA_CERT: 
549:  DOCKERHUB_USERNAME: ***
550:  DOCKERHUB_TOKEN: ***
551:  TEST_CNPG_DATABASE: serviceradar_web_ng_test
552:  INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp
553:  INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir
554:  CARGO_HOME: /home/runner/.cargo
555:  CARGO_INCREMENTAL: 0
556:  CARGO_TERM_COLOR: always
557:  ##[endgroup]
558:  ##[group]Run : work around spurious network errors in curl 8.0
559:  ^[[36;1m: work around spurious network errors in curl 8.0^[[0m
560:  ^[[36;1m# https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/timeout.20investigation^[[0m
...

611:  SRQL_TEST_DATABASE_CA_CERT: 
612:  DOCKERHUB_USERNAME: ***
613:  DOCKERHUB_TOKEN: ***
614:  TEST_CNPG_DATABASE: serviceradar_web_ng_test
615:  INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp
616:  INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir
617:  CARGO_HOME: /home/runner/.cargo
618:  CARGO_INCREMENTAL: 0
619:  CARGO_TERM_COLOR: always
620:  ##[endgroup]
621:  Attempting to download 1.x...
622:  Acquiring v1.28.1 from https://github.com/bazelbuild/bazelisk/releases/download/v1.28.1/bazelisk-linux-amd64
623:  Adding to the cache ...
624:  Successfully cached bazelisk to /home/runner/_work/_tool/bazelisk/1.28.1/x64
625:  Added bazelisk to the path
626:  ##[warning]Failed to restore: Cache service responded with 400
627:  Restored bazelisk cache dir @ /home/runner/.cache/bazelisk
...

693:  env:
694:  BUILDBUDDY_ORG_API_KEY: ***
695:  SRQL_TEST_DATABASE_URL: ***
696:  SRQL_TEST_ADMIN_URL: ***
697:  SRQL_TEST_DATABASE_CA_CERT: 
698:  DOCKERHUB_USERNAME: ***
699:  DOCKERHUB_TOKEN: ***
700:  TEST_CNPG_DATABASE: serviceradar_web_ng_test
701:  INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp
702:  INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir
703:  CARGO_HOME: /home/runner/.cargo
704:  CARGO_INCREMENTAL: 0
705:  CARGO_TERM_COLOR: always
706:  ##[endgroup]
707:  SRQL_TEST_DATABASE_CA_CERT secret must be configured to verify SRQL fixture TLS.
708:  ##[error]Process completed with exit code 1.
709:  Post job cleanup.
710:  [command]/usr/bin/git version
711:  git version 2.52.0
712:  Temporarily overriding HOME='/home/runner/_work/_temp/32d03969-185d-4209-8565-b85533edb82c' before making global git config changes
713:  Adding repository directory to the temporary git global config as a safe directory
714:  [command]/usr/bin/git config --global --add safe.directory /home/runner/_work/serviceradar/serviceradar
715:  Removing SSH command configuration
716:  [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
717:  [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
718:  fatal: No url found for submodule path 'swift/FieldSurvey/LocalPackages/arrow-swift' in .gitmodules
719:  ##[warning]The process '/usr/bin/git' failed with exit code 128
720:  Cleaning up orphan processes

Imported GitHub PR comment. Original author: @qodo-code-review[bot] Original URL: https://github.com/carverauto/serviceradar/pull/2982#issuecomment-3988551358 Original created: 2026-03-03T04:17:24Z --- ## CI Feedback 🧐 A test triggered by this PR failed. Here is an AI-generated analysis of the failure: <table><tr><td> **Action:** build</td></tr> <tr><td> **Failed stage:** [Configure SRQL fixture database for tests](https://github.com/carverauto/serviceradar/actions/runs/22608031039/job/65504257645) [❌] </td></tr> <tr><td> **Failed test name:** "" </td></tr> <tr><td> **Failure summary:** The action failed because a required secret/env var for the SRQL TLS test fixture was not <br>configured:<br> - The workflow exited with code <code>1</code> after printing: <code>SRQL_TEST_DATABASE_CA_CERT secret must </code><br><code>be configured to verify SRQL fixture TLS.</code> (log lines 707-708).<br> - The environment shows <br><code>SRQL_TEST_DATABASE_CA_CERT:</code> is empty, so the step intentionally aborted.<br> <br> A separate issue happened during post-job cleanup, but it did not cause the job failure:<br> - <code>git </code><br><code>submodule foreach --recursive</code> failed with <code>fatal: No url found for submodule path </code><br><code>'swift/FieldSurvey/LocalPackages/arrow-swift' in .gitmodules</code> (exit code <code>128</code>, log lines 718-719), <br>emitted as a warning.<br> </td></tr> <tr><td> <details><summary>Relevant error logs:</summary> ```yaml 1: Runner name: 'arc-runner-set-hk6mk-runner-nwj2p' 2: Runner group name: 'Default' ... 139: ^[[36;1mif command -v apt-get >/dev/null 2>&1; then^[[0m 140: ^[[36;1m sudo apt-get update^[[0m 141: ^[[36;1m sudo apt-get install -y build-essential pkg-config libssl-dev protobuf-compiler cmake flex bison^[[0m 142: ^[[36;1melif command -v dnf >/dev/null 2>&1; then^[[0m 143: ^[[36;1m sudo dnf install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m 144: ^[[36;1melif command -v yum >/dev/null 2>&1; then^[[0m 145: ^[[36;1m sudo yum install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m 146: ^[[36;1melif command -v microdnf >/dev/null 2>&1; then^[[0m 147: ^[[36;1m sudo microdnf install -y gcc gcc-c++ make openssl-devel protobuf-compiler cmake flex bison^[[0m 148: ^[[36;1melse^[[0m 149: ^[[36;1m echo "Unsupported package manager; please install gcc, g++ (or clang), make, OpenSSL headers, pkg-config, and protoc manually." >&2^[[0m 150: ^[[36;1m exit 1^[[0m 151: ^[[36;1mfi^[[0m 152: ^[[36;1m^[[0m 153: ^[[36;1mensure_pkg_config^[[0m 154: ^[[36;1mprotoc --version || (echo "protoc installation failed" && exit 1)^[[0m 155: shell: /usr/bin/bash -e {0} ... 387: shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0} 388: env: 389: BUILDBUDDY_ORG_API_KEY: *** 390: SRQL_TEST_DATABASE_URL: *** 391: SRQL_TEST_ADMIN_URL: *** 392: SRQL_TEST_DATABASE_CA_CERT: 393: DOCKERHUB_USERNAME: *** 394: DOCKERHUB_TOKEN: *** 395: TEST_CNPG_DATABASE: serviceradar_web_ng_test 396: INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp 397: INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir 398: ##[endgroup] 399: ##[group]Run : install rustup if needed 400: ^[[36;1m: install rustup if needed^[[0m 401: ^[[36;1mif ! command -v rustup &>/dev/null; then^[[0m 402: ^[[36;1m curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused --location --silent --show-error --fail https://sh.rustup.rs | sh -s -- --default-toolchain none -y^[[0m 403: ^[[36;1m echo "$CARGO_HOME/bin" >> $GITHUB_PATH^[[0m ... 543: shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0} 544: env: 545: BUILDBUDDY_ORG_API_KEY: *** 546: SRQL_TEST_DATABASE_URL: *** 547: SRQL_TEST_ADMIN_URL: *** 548: SRQL_TEST_DATABASE_CA_CERT: 549: DOCKERHUB_USERNAME: *** 550: DOCKERHUB_TOKEN: *** 551: TEST_CNPG_DATABASE: serviceradar_web_ng_test 552: INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp 553: INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir 554: CARGO_HOME: /home/runner/.cargo 555: CARGO_INCREMENTAL: 0 556: CARGO_TERM_COLOR: always 557: ##[endgroup] 558: ##[group]Run : work around spurious network errors in curl 8.0 559: ^[[36;1m: work around spurious network errors in curl 8.0^[[0m 560: ^[[36;1m# https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/timeout.20investigation^[[0m ... 611: SRQL_TEST_DATABASE_CA_CERT: 612: DOCKERHUB_USERNAME: *** 613: DOCKERHUB_TOKEN: *** 614: TEST_CNPG_DATABASE: serviceradar_web_ng_test 615: INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp 616: INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir 617: CARGO_HOME: /home/runner/.cargo 618: CARGO_INCREMENTAL: 0 619: CARGO_TERM_COLOR: always 620: ##[endgroup] 621: Attempting to download 1.x... 622: Acquiring v1.28.1 from https://github.com/bazelbuild/bazelisk/releases/download/v1.28.1/bazelisk-linux-amd64 623: Adding to the cache ... 624: Successfully cached bazelisk to /home/runner/_work/_tool/bazelisk/1.28.1/x64 625: Added bazelisk to the path 626: ##[warning]Failed to restore: Cache service responded with 400 627: Restored bazelisk cache dir @ /home/runner/.cache/bazelisk ... 693: env: 694: BUILDBUDDY_ORG_API_KEY: *** 695: SRQL_TEST_DATABASE_URL: *** 696: SRQL_TEST_ADMIN_URL: *** 697: SRQL_TEST_DATABASE_CA_CERT: 698: DOCKERHUB_USERNAME: *** 699: DOCKERHUB_TOKEN: *** 700: TEST_CNPG_DATABASE: serviceradar_web_ng_test 701: INSTALL_DIR_FOR_OTP: /home/runner/_work/_temp/.setup-beam/otp 702: INSTALL_DIR_FOR_ELIXIR: /home/runner/_work/_temp/.setup-beam/elixir 703: CARGO_HOME: /home/runner/.cargo 704: CARGO_INCREMENTAL: 0 705: CARGO_TERM_COLOR: always 706: ##[endgroup] 707: SRQL_TEST_DATABASE_CA_CERT secret must be configured to verify SRQL fixture TLS. 708: ##[error]Process completed with exit code 1. 709: Post job cleanup. 710: [command]/usr/bin/git version 711: git version 2.52.0 712: Temporarily overriding HOME='/home/runner/_work/_temp/32d03969-185d-4209-8565-b85533edb82c' before making global git config changes 713: Adding repository directory to the temporary git global config as a safe directory 714: [command]/usr/bin/git config --global --add safe.directory /home/runner/_work/serviceradar/serviceradar 715: Removing SSH command configuration 716: [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand 717: [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" 718: fatal: No url found for submodule path 'swift/FieldSurvey/LocalPackages/arrow-swift' in .gitmodules 719: ##[warning]The process '/usr/bin/git' failed with exit code 128 720: Cleaning up orphan processes ``` </details></td></tr></table>
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
carverauto/serviceradar!3008
No description provided.