Skip to content

feat(portal): one shared app bar on every portal app - #613

Merged
mandy-chessell merged 3 commits into
odpi:mainfrom
dwolfson:feat/consistent-app-header
Oct 6, 2026
Merged

mandy-chessell merged 3 commits into
odpi:mainfrom
dwolfson:feat/consistent-app-header

Conversation

@dwolfson

@dwolfson dwolfson commented Oct 5, 2026

Copy link
Copy Markdown
Member

Why

The back-to-Portal link was hand-rolled per page: top-left on some, top-right on others, shown only after choosing a persona on Catalog, Explorer and Lineage, and missing on Governance Metrics, Demo Admin and the docs viewer. Only Explorer and Data Mesh had a light/dark toggle, and identity badges had three different looks in three different places.

What

Every app now renders the same bar:
⌂ Portal | icon Title subtitle | page controls | extras · Promise/Memento · identity · ☀/☾

  • static/app-bar.js (new, no framework):
    • Keeps the theme in one egeria-theme key and applies it in <head> before first paint.
    • Provides a declarative <header class="eg-appbar"> for plain-JS pages.
    • Adds a floating Feedback button for pages without React.
  • AppHeader / ThemeToggle / useEgeriaTheme / ForLineageToggle in egeria-shared-ui.js for the React SPAs. The Promise/Memento toggle moves into the bar; it used to sit on top of the Feedback button.
  • Portal link: always shown on every app.
  • Identity: persona → 🎭; otherwise signed-in user → 👤; otherwise "Choose persona" (quickstart) or nothing (freshstart).
  • Light theme:
    • :root.light palettes added to every page that lacked one.
    • Overview, Local Dashboards, Governance Metrics and the docs viewer re-theme their charts and diagrams when toggled.
    • The Portal keeps its own header but gains the toggle.
  • Feedback: added to Lineage, Data Mesh, Local Dashboards, Governance Metrics and the docs. Overview's private copy is replaced by the shared one.
  • tests/test_app_bar_consistency.py: stops pages drifting back to their own Portal link or theme handling (74 cases).
  • Scope: quickstart, freshstart and portal-docs.
  • BACKLOG.md:
    • Follow-ups: my-egeria TUI (needs pyegeria), Explorer vega charts in light mode, Data Mesh graph palette.
    • A separate investigation note on DigitalProductFamily Read refusals.

Testing

  • Quickstart: checked in Chrome on every app, in dark and light: header layout, identity, toggle persistence across pages, Promise/Memento in the bar, no new console errors.
  • Freshstart: wasn't running, so only syntax checks and the pytest guard.

Notes

egeria-overview.html is also changed by #609, #611 and #612. The hunks are in different places (header, feedback widget, vega config, user chip), but whichever merges later may need a rebase.

🤖 Generated with Claude Code

The back-to-Portal link was hand-rolled per page: top-left on some, top-right
on others, only shown once a persona was chosen on Catalog/Explorer/Lineage,
and missing on Governance Metrics, Demo Admin and the docs viewer. Only
Explorer and Data Mesh had a light/dark toggle, and identity badges had three
looks in three places.

Every app now renders the same bar:
  [⌂ Portal] | icon Title subtitle | page controls | extras, Promise/Memento,
  identity, theme
- static/app-bar.js (no framework): theme state on one 'egeria-theme' key,
  applied in <head> before first paint; declarative <header class="eg-appbar">
  for plain-JS pages; floating Feedback for pages without React.
- AppHeader / ThemeToggle / useEgeriaTheme / ForLineageToggle in
  egeria-shared-ui.js for the React SPAs. The Promise/Memento toggle moves into
  the bar (it used to sit on top of the Feedback button).
- Portal link is unconditional; identity is persona, else signed-in user, else
  "Choose persona" (quickstart) / nothing (freshstart), the same on every app.
- :root.light palettes for every page that lacked one; Overview, Local
  Dashboards, Governance Metrics and the docs viewer re-theme their charts and
  diagrams on toggle. The Portal keeps its own header but gains the toggle.
- Feedback added to Lineage, Data Mesh, Local Dashboards, Governance Metrics and
  docs; Overview's private copy replaced by the shared one.
- tests/test_app_bar_consistency.py stops pages drifting back to their own copy.

Applied to quickstart, freshstart and portal-docs. Quickstart verified in the
browser (dark + light); freshstart static checks only.

Signed-off-by: Dan Wolfson <dan.wolfson@pdr-associates.com>
Burst shape, what the Portal code does and doesn't poll, what is ruled out,
and the Egeria ISSUE-90 caveat (refused search hits are logged as
unauthorized access attempts until the pending fix).

Signed-off-by: Dan Wolfson <dan.wolfson@pdr-associates.com>
@dwolfson dwolfson self-assigned this Oct 6, 2026
@mandy-chessell
mandy-chessell merged commit 0fb105f into odpi:main Oct 6, 2026
5 checks passed
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.

2 participants