Skip to content

fix: menu header clipping and breadcrumb hyperlink#221

Merged
jason-rl merged 4 commits into
mainfrom
jason/fix-menu-header-clipping-and-dynamic-banner
Apr 24, 2026
Merged

fix: menu header clipping and breadcrumb hyperlink#221
jason-rl merged 4 commits into
mainfrom
jason/fix-menu-header-clipping-and-dynamic-banner

Conversation

@jason-rl

@jason-rl jason-rl commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Fix breadcrumb top border clipping: At ~40-row terminal heights, the full layout content exceeded the terminal height, causing Ink to clip the rl > Home breadcrumb's top rounded border off the screen. Fixed by adding flexShrink={0} to the Breadcrumb outer Box and raising the full layout height threshold from 40 to 43.
  • Clickable domain hyperlink in breadcrumb: The custom domain shown in the breadcrumb header (rl (domain) > Home) is now an OSC 8 hyperlink via ink-link. In terminals that support the protocol (Kitty, iTerm2, etc.), clicking the domain opens the platform URL (https://platform.<domain>). Unsupported terminals show the plain text unchanged (fallback={false}).

Test plan

  • npm run build passes
  • All Banner/MainMenu/Breadcrumb tests pass (113 total in affected suites)
  • Formatting and lint checks pass (0 new warnings)
  • Manual: run rli at terminal heights 35, 40, 43, 45 — breadcrumb border should never clip
  • Manual: unset RUNLOOP_BASE_URL — default "RUNLOOP.ai" behavior preserved
  • Manual: in a supported terminal (Kitty/iTerm2), verify the domain in the breadcrumb is clickable and opens https://platform.<domain>
  • Manual: in an unsupported terminal, verify no URL text is appended after the domain

🤖 Generated with Claude Code

jason-rl and others added 3 commits April 24, 2026 10:10
At certain terminal heights (~40 rows), the full layout content totaled
39-41 lines, causing Ink to clip the breadcrumb's top rounded border off
the screen. Two fixes:

- Add flexShrink={0} to Breadcrumb outer Box to prevent Yoga from
  compressing the bordered element
- Raise the full layout height threshold from 40 to 43 to ensure
  adequate headroom for the bordered items + BigText banner

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When RUNLOOP_BASE_URL is set, the main menu banner now displays the
custom domain instead of hardcoded "RUNLOOP.ai". The leftmost "runloop"
label in the FQDN is uppercased (e.g. "staging.RUNLOOP.dev").

- Add runloopBannerText() utility that derives display text from the
  base domain, capitalizing the leftmost "runloop" label
- Banner BigText dynamically computes min-width from the domain length
  and falls back to compact mode for long domains that would wrap to
  multiple ASCII art rows
- Update all layout modes (minimal/compact/medium/full) to use the
  dynamic banner text
- Raise MIN_HEIGHT_FOR_BIG_BANNER to 43 to match the layout threshold

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When RUNLOOP_BASE_URL is set, the main menu banner now displays the
custom domain instead of hardcoded "RUNLOOP.ai". The leftmost "runloop"
label in the FQDN is uppercased (e.g. "staging.RUNLOOP.dev").

- Add runloopBannerText() utility that derives display text from the
  base domain, capitalizing the leftmost "runloop" label
- Banner BigText dynamically checks whether the terminal is wide enough
  for the estimated rendered width, falling back to compact mode when
  the domain text would overflow or wrap to multiple ASCII art rows
- Update all layout modes (minimal/compact/medium/full) to use the
  dynamic banner text
- Raise MIN_HEIGHT_FOR_BIG_BANNER to 43 to match the layout threshold

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jason-rl jason-rl force-pushed the jason/fix-menu-header-clipping-and-dynamic-banner branch from 0b03acb to c7eb930 Compare April 24, 2026 18:44
@jason-rl jason-rl marked this pull request as ready for review April 24, 2026 19:12
@jason-rl jason-rl requested a review from dines-rl April 24, 2026 19:12
@jason-rl jason-rl force-pushed the jason/fix-menu-header-clipping-and-dynamic-banner branch from 77777be to 0b83874 Compare April 24, 2026 23:46
@jason-rl jason-rl changed the title fix: menu header clipping and dynamic banner domain fix: menu header clipping and breadcrumb hyperlink Apr 24, 2026
@jason-rl jason-rl merged commit 3ef6271 into main Apr 24, 2026
16 checks passed
@jason-rl jason-rl deleted the jason/fix-menu-header-clipping-and-dynamic-banner branch April 24, 2026 23:47
tode-rl pushed a commit that referenced this pull request May 12, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.17.0](v1.16.0...v1.17.0)
(2026-05-12)


### Features

* add --public flag to agent create, fix object upload --public
([#219](#219))
([6e7a8b3](6e7a8b3))
* add clipboard keybinds to detail screens
([#231](#231))
([83874ca](83874ca))
* add TUI features and fix benchmark pagination total count
([#230](#230))
([7565d45](7565d45))
* agent object picker, multi-mount support, and TUI improvements
([#217](#217))
([dbe2a5c](dbe2a5c))
* pty support ([#234](#234))
([3cfd720](3cfd720))
* smart default download path + stdin/stdout support
([#222](#222))
([419a961](419a961))
* support multi-path tar/tgz archive creation in obj upload
([#220](#220))
([3528701](3528701))


### Bug Fixes

* menu header clipping and breadcrumb hyperlink
([#221](#221))
([3ef6271](3ef6271))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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