apache / apache/cloudstack

[4.22] Favicon only appears briefly, then disappears

Đang mở
#12,079 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
component:UI
Ngôn ngữ chính
Java
Star
3.1k
Fork
1.4k
Merge trung bình
6 ngày 19 giờ
Pull request đã merge (30 ngày)
32

Mô tả

### problem

When customizing the Primate UI’s favicon, it flashes for ~0.5 seconds during page load (while index.html is rendered) and then disappears as the SPA transitions to a white page before the login view fully loads. The favicon never reappears even though the icon file is valid and reachable.

The favicon 99% of the time:
Image

The favicon when it loads for 0.5 seconds:
Image

### versions

Environment

- Apache CloudStack version: 4.22.0.0
- OS: Ubuntu Noble (management server)
- Browser(s) tested: Chrome / Opera (same behavior)
- Deployment setup: Two management servers behind a VIP with HAProxy

### The steps to reproduce the bug

1. Replace default favicon:

> File: `/usr/share/cloudstack-management/webapp/cloud.ico`
> File: `/usr/share/cloudstack-management/webapp/assets/logo.svg`

2. Clear browser cache and reload the login page.
3. Observe favicon behavior during and after page load.

...

### What to do about it?

The Primate UI currently references two favicon sources:

- A hardcoded `` in `index.html`
- A configurable `"loginFavicon": "assets/logo.svg"` entry in `/etc/cloudstack/management/config.json`

This creates inconsistent behavior — the browser loads `cloud.ico` first (from `index.html`), then when the SPA initializes and renders based on `config.json`, the favicon reference isn’t updated or re-applied, causing it to disappear.

To fix this:

- Unify favicon handling so the UI consistently uses the favicon defined in `config.json` (similar to `appTitle` and `loginTitle`), and
- Remove or override the hardcoded `cloud.ico` link in `index.html` at runtime.

Alternatively, ensure the SPA explicitly re-sets the favicon after it mounts (e.g., by adding a small function that reads the `loginFavicon` key and updates `` dynamically).

This would let the favicon persist across page transitions and make it fully configurable, just like the logo and title.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng cách so sánh liên kết favicon được hardcode trong index.html với mục loginFavicon trong /etc/cloudstack/management/config.json, sau đó theo dõi thời điểm SPA áp dụng cấu hình trong quá trình khởi tạo trang đăng nhập. Hoàn thành khi favicon đã cấu hình vẫn hiển thị sau khi SPA tải xong và trong các lần chuyển trang, kể cả sau khi thay thế các tệp mặc định.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript
Lĩnh vực
frontend, web-dev
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.