Skip to content

feat(web): implement new titlebar (HeaderV2)#595

Open
kyasbal wants to merge 7 commits intoGoogleCloudPlatform:epic/golden-layoutfrom
kyasbal:feat/web-titlebar-ui-split
Open

feat(web): implement new titlebar (HeaderV2)#595
kyasbal wants to merge 7 commits intoGoogleCloudPlatform:epic/golden-layoutfrom
kyasbal:feat/web-titlebar-ui-split

Conversation

@kyasbal
Copy link
Copy Markdown
Member

@kyasbal kyasbal commented Apr 6, 2026

Motivation

With the integration of Golden Layout, we need a new header (TitleBar) to optimize screen space and provide centralized menu management. This PR introduces HeaderV2 and a MenuManager service to decouple layout controls and global actions from individual panels.

Important

This PR depends on #594 (BackendSync refactor). Please merge #594 first.

Changes

  • Created HeaderV2 component with a modern design optimized for Golden Layout.
  • Introduced MenuManager service to centralize the registration and state of menu items.
  • Decoupled layout management and global actions from the main component into the new header.
  • Added support for dynamic menu items with support for checkboxes and custom actions.

日本語訳

タイトル

feat(web): 新しいタイトルバー (HeaderV2) の実装

動機

Golden Layout の導入に伴い、画面スペースを最適化し、中央集権的なメニュー管理を提供するための新しいヘッダー(TitleBar)が必要になりました。この PR では、レイアウトコントロールやグローバルアクションを個別のパネルから分離するために、HeaderV2MenuManager サービスを導入します。

Important

この PR は #594 (BackendSync refactor) に依存しています。先に #594 をマージしてください。

変更点

  • Golden Layout に最適化されたモダンなデザインの HeaderV2 コンポーネントを作成しました。
  • メニュー項目の登録と状態を一元管理する MenuManager サービスを導入しました。
  • レイアウト管理とグローバルアクションを、メインコンポーネントから新しいヘッダーに分離しました。
  • チェックボックスやカスタムアクションをサポートする動的メニュー項目のサポートを追加しました。
image

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a major refactoring of the application's header and menu management system, transitioning to a 'Smart/Dumb' component architecture with the new HeaderV2Component and MenuManager service. It also replaces the BackendConnectionService with a signal-based BackendSyncService using Angular's rxResource. While the architectural shift is positive, there are critical issues in the synchronization logic where a single failed poll will permanently stop background updates. Additionally, the menu normalization logic inside the computed signal is inefficient and may cause state loss due to the recreation of signal instances on every change. Finally, the use of !important in the new SCSS files should be avoided to maintain style maintainability.

@kyasbal kyasbal force-pushed the feat/web-titlebar-ui-split branch from e33cb75 to 3a034f8 Compare April 6, 2026 04:57
Signed-off-by: kyasbal <ikakeru@google.com>
- Remove aria-hidden="true" from the menu item label span in header-v2.component.html
- Add variables for badge and status dot colors in header-v2.component.scss
- Replace hardcoded color values with new variables in header-v2.component.scss
- Add :host header .menu-group rule in header-v2.component.scss
- Reorder properties in multiple CSS rules in header-v2.component.scss
- Change :host display from block to contents in header-v2-smart.component.scss
- Remove createMenuGroupViewModel in menu-manager.service.ts
- Change groupsSignal to store MenuGroupViewModel instead of MenuGroup in menu-manager.service.ts
- Update groups computed property to remove the call to createMenuGroupViewModel
- Update addGroup to ensure icon is a string by defaulting to empty string
- Update addItem to call createMenuItemViewModel before pushing to group.items
- Remove Japanese text from a comment in menu-manager.service.spec.ts
@kyasbal kyasbal marked this pull request as ready for review April 7, 2026 06:01
@kyasbal kyasbal requested review from jyane and renamoo as code owners April 7, 2026 06:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant