Skip to content

Insecure-connection (HTTP) warning: clean top strip instead of floating overlay#58

Merged
mvalancy merged 1 commit into
developfrom
fix/tls-warning-banner
Jun 14, 2026
Merged

Insecure-connection (HTTP) warning: clean top strip instead of floating overlay#58
mvalancy merged 1 commit into
developfrom
fix/tls-warning-banner

Conversation

@mvalancy

Copy link
Copy Markdown
Member

What

The "Insecure Connection (HTTP)" warning was a fixed corner badge (fixed top-4 right-4 z-50) that floated over the UI and constantly overlapped page content. Replaced it with a single, slim, dismissible warning strip in a standard location.

Approach (chosen with you: slim banner under the header, only when insecure)

  • New InsecureConnectionBanner (replaces the floating TlsStatusIndicator and the unused TlsSecurityBanner): a full-width strip shown only over HTTP, dismissible for the session. Two placements via one component:
    • In-app: in-flow at the very top of the shell — it reserves its own space and pushes the app down rather than floating over it.
    • Auth pages (no app chrome): a pinned top strip, portaled to <body> so a transformed ancestor can't offset it.
  • Layout shell is now a flex column (h-screen) with the banner as the first row and the app filling the rest; app page roots use h-full instead of h-screen so they shrink to make room. With no banner (HTTPS) the layout is identical to before.

Why the shell change

<body> carries a transform and every app page was h-screen (100vh), so naive padding/fixed approaches either scrolled the page (breaking fixed) or hid the strip. An in-flow strip in a flex-column shell is immune to both.

Verification (over HTTP)

  • Banner at top:0, slim (33px), app starts exactly at the banner's bottom (no overlap), no page scroll introduced, dismiss reclaims the space.
  • New tests/diagnostics/insecure-connection-banner.spec.ts asserts placement + no-overlap + dismiss (auth + in-app).
  • THE GATE (smoke) 5/5 · web typecheck clean.
before after
floating badge overlapping top-right slim dismissible strip at the very top, app pushed down

🤖 Generated with Claude Code

…t a floating overlay

The HTTP warning was a fixed corner badge (`fixed top-4 right-4`) that floated
over the UI and constantly overlapped page content. Replace it with a single,
slim, dismissible warning strip in a standard location.

- New `InsecureConnectionBanner` (replaces the floating `TlsStatusIndicator` and
  the unused `TlsSecurityBanner`): a full-width strip shown ONLY over HTTP,
  dismissible for the session. Two placements:
  - in-app: in-flow at the very top of the shell, so it reserves its own space
    and pushes the app down instead of overlapping it;
  - auth pages (no app chrome): a pinned top strip, portaled to <body> so a
    transformed ancestor can't offset it.
- Layout shell is now a flex column (h-screen) with the banner as the first row
  and the app filling the rest; app page roots use h-full instead of h-screen so
  they shrink to the banner. With no banner (HTTPS) this is identical to before.

Verified (over HTTP): banner at top:0, slim (33px), app starts exactly at its
bottom (no overlap), no page scroll introduced, dismiss reclaims the space.
New tests/diagnostics/insecure-connection-banner.spec.ts asserts all of this;
THE GATE 5/5; web typecheck clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🧪 Comprehensive Test Suite

  • Unit suites (Node 18.x & 20.x) — core, web, server, mcp-server: ✅ passed
  • Installer & deploy config: ✅ passed

Full-stack smoke gate runs in the CI workflow.

@mvalancy mvalancy merged commit 780f71d into develop Jun 14, 2026
16 checks passed
@mvalancy mvalancy deleted the fix/tls-warning-banner branch June 14, 2026 15:49
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