Skip to content

Offer help self-hosting OpenBot in a dismissable banner - #720

Merged
davidmckayv merged 3 commits into
mainfrom
david/self-host-banner
Oct 2, 2026
Merged

davidmckayv merged 3 commits into
mainfrom
david/self-host-banner

Conversation

@davidmckayv

Copy link
Copy Markdown
Contributor

A slim, dismissable bar at the top of the signed-in app: "Self-host OpenBot for your organization." with a Talk to an engineer link to https://copilotkit.ai/talk-to-an-engineer?ref=openbot_app. The ref marks an in-app visit, separate from the README's openbot_readme.

How it behaves

  • Where: the app shell only (_authed/_app), above the page. Not on sign-in, onboarding, admin or settings.
  • Dismiss: the X saves selfHostBannerDismissed: true to the person's preferences, so it stays closed on every device. The bar hides at once and comes back if the save fails.
  • Off for everybody: OPENBOT_SELF_HOST_BANNER=false (or 0), reported to the browser through /api/capabilities like OPENBOT_GENERATIVE_UI. For a fork running OpenBot for its own organization. The chart has no value for the generated-interface flag either, so this one goes through config.extraEnv.
  • Layout: text, link and X are packed from the left. On localhost CopilotKit's dev inspector floats over the top-right corner, and a hit test showed it covering an X pinned there, so the X could not be clicked.
  • Link: an anchor styled as a link, not Button with render, because Base UI gives a rendered anchor role="button". It uses the foreground color, because the link variant's primary measured as a mid grey on the dark bar.

Checked

  • bun run typecheck, lint, format:check and build pass.
  • New tests: the banner renders when enabled, hides when dismissed or switched off, saves on dismiss, and comes back when the save fails; the config flag; the capability; and the preference patch. Each fails with the code reverted.
  • bun run test:ci: the same 8 environment-only failures as main locally, none new.
  • In Chrome, on a local stack:
    • the bar renders at desktop width and at 390px, in light and dark;
    • the link carries ref=openbot_app, opens in a new tab, rel="noopener noreferrer";
    • X hides it, and it stays hidden after a reload;
    • with OPENBOT_SELF_HOST_BANNER=false and the preference not dismissed, there is no banner.

A slim bar at the top of the signed-in app links to CopilotKit's
engineers, with ref=openbot_app so an in-app visit can be told apart
from the README. Closing it is saved to the person's preferences, so it
stays closed on every device. OPENBOT_SELF_HOST_BANNER=false hides it for
a fork that runs OpenBot for its own organization.

The controls sit together from the left, because on localhost
CopilotKit's dev inspector floats over the top-right corner and covered
a Dismiss pinned there.
At 390px the headline cut off at "for your or...", losing the message.
The sentence now wraps, and the link and Dismiss drop to the next line
together, left-aligned with it, so the whole sentence and both controls
stay readable and Dismiss stays clear of the dev inspector.
@davidmckayv
davidmckayv merged commit dcea0a6 into main Oct 2, 2026
19 checks passed
@davidmckayv
davidmckayv deleted the david/self-host-banner branch October 2, 2026 22:00
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