fix(statusbar): show public origin, never the internal server address #57

Merged
Claude-Run merged 1 commit from fix/VAPP-44-statusbar-public-origin into main 2026-06-29 02:49:39 +02:00
Member

The statusbar read get_server_url(), which after the VAPP-41 internal/public split returns VERVAIN_SERVER_INTERNAL_URL and so leaked the deployment-private internal host/port (e.g. http://vervain-server:15443) to every signed-in browser. Switch the statusbar URL source to get_public_url() (VERVAIN_SERVER_PUBLIC_URL), keeping the footer layout while showing only the browser-reachable public origin.

The Settings Connection card also rendered the internal URL to all roles, not just admins. Gate the internal-URL row behind is_site_admin() via a self-hiding InternalServerUrlRow (mirroring the AgentBinariesCard pattern); the public-origin row stays visible to everyone. After this, no non-admin surface renders the internal address.

Add a VAPP-44 leak guard (statusbar_guard.rs) that embeds statusbar.rs and fails the build if get_server_url reappears there, enforcing the fix mechanically.

#VAPP-44

The statusbar read get_server_url(), which after the VAPP-41 internal/public split returns VERVAIN_SERVER_INTERNAL_URL and so leaked the deployment-private internal host/port (e.g. http://vervain-server:15443) to every signed-in browser. Switch the statusbar URL source to get_public_url() (VERVAIN_SERVER_PUBLIC_URL), keeping the footer layout while showing only the browser-reachable public origin. The Settings Connection card also rendered the internal URL to all roles, not just admins. Gate the internal-URL row behind is_site_admin() via a self-hiding InternalServerUrlRow (mirroring the AgentBinariesCard pattern); the public-origin row stays visible to everyone. After this, no non-admin surface renders the internal address. Add a VAPP-44 leak guard (statusbar_guard.rs) that embeds statusbar.rs and fails the build if get_server_url reappears there, enforcing the fix mechanically. #VAPP-44
fix(statusbar): show public origin, never the internal server address
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 1m26s
Create release / Create release from merged PR (pull_request) Has been skipped
aebc5b9643
The statusbar read get_server_url(), which after the VAPP-41 internal/public split returns VERVAIN_SERVER_INTERNAL_URL and so leaked the deployment-private internal host/port (e.g. http://vervain-server:15443) to every signed-in browser. Switch the statusbar URL source to get_public_url() (VERVAIN_SERVER_PUBLIC_URL), keeping the footer layout while showing only the browser-reachable public origin.

The Settings Connection card also rendered the internal URL to all roles, not just admins. Gate the internal-URL row behind is_site_admin() via a self-hiding InternalServerUrlRow (mirroring the AgentBinariesCard pattern); the public-origin row stays visible to everyone. After this, no non-admin surface renders the internal address.

Add a VAPP-44 leak guard (statusbar_guard.rs) that embeds statusbar.rs and fails the build if get_server_url reappears there, enforcing the fix mechanically.

#VAPP-44
Sign in to join this conversation.
No reviewers
No labels
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
psa-systems/vervain-apps!57
No description provided.