Skip to content

fix(web): size landing announcement popups to content, keep centered - #1144

Merged
chronoai-shining merged 3 commits into
developfrom
claude/announcement-dialog-sizing-8eqx7d
Jun 29, 2026
Merged

fix(web): size landing announcement popups to content, keep centered#1144
chronoai-shining merged 3 commits into
developfrom
claude/announcement-dialog-sizing-8eqx7d

Conversation

@chronoai-shining

Copy link
Copy Markdown
Collaborator

Summary

The landing AnnouncementPopup and LaunchCelebrationPopup pinned all four edges (top/bottom: 10vh, left/right: 15vw), so the card always filled the bounded area and scrolled internally even when it held little content — leaving a large empty void below short announcements. This makes each popup size to its content: fixed width, content-hugging height capped at the prior bound, always centered.

Linked issue

Closes #1143

Type of change

  • Bug fix (fix:)
  • New feature (feat:)
  • Refactor (refactor:) — no behaviour change
  • Docs (docs:)
  • CI / build / infra (chore(ci):, chore(infra):)
  • Breaking change

Commit decomposition

  • Each commit is self-contained (a reviewer can understand it from the diff + message alone).
  • Each commit is small (one logical change).
  • Refactors are separated from behaviour changes.
  • No Co-Authored-By trailers.

Commits:

  • fix(web): size landing announcement popups to content, keep centered
  • docs: changeset for announcement popup sizing fix

Changeset

  • Added a changeset (bun changeset) — describe the user-facing impact.
  • Or this PR is docs-only / CI-only and uses an empty changeset (bun changeset --empty).

What changed

Both popups now use a click-through full-viewport flex centering layer wrapping a single card that:

  • keeps a fixed width (w-[70vw], equal to the prior 15vw side margins),
  • lets height hug the content,
  • caps height at max-h-[80vh] (equal to the prior 10vh top/bottom margins), scrolling internally only when content would exceed that bound,
  • stays centered as its height changes.

The wrapper is pointer-events-none and the card pointer-events-auto, so the hero + lifecycle ring behind it remain interactive (no backdrop) — preserving the prior non-blocking behavior.

Testing

  • bun run typecheck:web
  • AnnouncementPopup unit tests (4) ✓
  • bun run lint ✓ (only pre-existing warnings in an unrelated file)

Screenshots / recordings

Manual visual QA against a running landing page is recommended before merge — the change is a Tailwind layout refactor verified by typecheck/tests/lint, but the void-vs-hug behavior is best confirmed in-browser.

Notes for the reviewer

The same fixed-edge pattern also appears in SkillsetDetailPage.tsx (with a different bound); left untouched as out of scope for this issue.

🤖 Generated with Claude Code


Generated by Claude Code

claude added 3 commits June 29, 2026 03:36
The landing AnnouncementPopup and LaunchCelebrationPopup pinned all four
edges (top/bottom: 10vh, left/right: 15vw), so the card always filled
that bounded area and scrolled internally even when it held very little
content — leaving a large empty void below the announcement.

Replace the fixed-edge box with a click-through full-viewport flex
centering layer wrapping a single card that:
  - keeps a fixed width (70vw, equal to the prior 15vw side margins),
  - lets height hug the content,
  - caps height at 80vh (equal to the prior 10vh top/bottom margins),
    scrolling internally only when content would exceed that bound,
  - stays centered as its height changes.

The wrapper is pointer-events-none and the card pointer-events-auto so
the hero + lifecycle ring behind it remain interactive (no backdrop),
preserving the prior non-blocking behavior.
The CI `audit` job (bun audit --audit-level=high) failed on three high
advisories in undici >=7.23.0 <7.28.0, pulled in transitively via
ornn-web › jsdom (a test-only dependency):
  - GHSA-vmh5-mc38-953g (TLS cert validation bypass, SOCKS5 ProxyAgent)
  - GHSA-vxpw-j846-p89q (WebSocket DoS via fragment count bypass)
  - GHSA-hm92-r4w5-c3mj (cross-origin routing via SOCKS5 pool reuse)

jsdom@29.1.1 accepts undici@^7.25.0, so forcing ^7.28.0 via the root
overrides block stays within the same major and only touches the
test-time surface — no runtime/user-facing change. Clears the audit
gate that was failing repo-wide on every open PR.
@chronoai-shining
chronoai-shining merged commit f40d8e4 into develop Jun 29, 2026
17 checks passed
@chronoai-shining
chronoai-shining deleted the claude/announcement-dialog-sizing-8eqx7d branch June 29, 2026 03:52
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.

[Bug] Landing announcement popups don't fit content — pinned to all four edges

2 participants