Put the sponsor sidebar on every page type, with the book first and last - #90
Merged
Merged
Conversation
Only listing pages carried the sponsor block. Tool, prompt, resource and
agent pages, changelogs, the directory, the submit form and the home page
had none.
- Layouts.app takes sponsors={true}: content in a main column, the
sponsor sidebar beside it, pinned by its bottom so it scrolls with the
page and then holds
- On the home page the sidebar starts beside the featured servers, so the
full-width hero, search and numbers above keep their width
- The book now closes the block as well as opening it; the sidebar settles
with its bottom in view, so the last tile is the one that stays on screen
- The listing keeps its own sidebar and shares the one hook
- /book is left out: a book tile there would link to the page itself
Closes #89
---
Pages affected:
- [browse MCP servers](https://ai.mcpharbor.dev/servers) -- gains the sponsor sidebar.
- [MCP Harbor](https://ai.mcpharbor.dev/) -- sponsors beside the featured servers.
- [MCP server changelog](https://ai.mcpharbor.dev/changelog) -- gains the sponsor sidebar.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #89.
Book first and last
The sponsor block is now Book · slot 1 · slot 2 · slot 3 · Book. Since #88 the sidebar scrolls with the page and then settles with its bottom in view for the rest of a long page, so the last tile is the one a reader keeps seeing. Now that tile is the book.
Every page type
/servers/<name>/for/<agent>/changelog/servers/bookLayouts.apptakessponsors={true}and renders the content in an 8/12 main column withLayouts.sponsor_sidebarbeside it. Belowlgthe sidebar stacks under the content, as on listings.On the home page the hero, search, numbers and MCP endpoint section were designed full width. Rather than squeeze them into two thirds, the sidebar starts beside the featured servers and runs alongside everything below.
One hook, not two
The bottom-pinning hook moved from the listing page into
Layouts.sponsor_sidebarasMcpRegistryWeb.Layouts.StickySidebar. The listing keeps its own sidebar, which has panels above and below the sponsors, and references the shared hook, so there's one copy of that behaviour.Tests
A new test loads 17 page paths and checks each has the sponsor block, the pinning hook and the tile order; another checks
/bookhas none. While writing it I hit a module-name collision with an existingSponsorsTestthat made tests vanish depending on load order — renamed, and the suite is now clean on four seeds: 235 passing.Pages affected:
🤖 Generated with Claude Code