• v3.22 747fc3322a

    Ghost released this 2026-03-24 08:13:22 +01:00 | 459 commits to main since this release

    Search (was completely broken):

    • wireSearch() registered inside tabChanged for 'learning' tab — runs
      after component HTML is in the DOM (lh-search existed but listener
      was never attached because element was null at IIFE load time)
    • Proper debounced search with 350ms delay, Escape key to clear
    • Search results show count, 'X results for "query"', Clear Search button
    • Empty state with helpful message; loading state while fetching

    Content viewer showing feed items beneath it (CSS cascade bug):

    • .lh-feed{display:flex} and .lh-category-bar{display:flex} defined
      at CSS lines 513/507 — after .hidden{display:none} at line 242
      So classList.add('hidden') was silently overridden
    • showFeed() and showViewer() now use element.style.display with
      explicit values ('flex'/'block'/'none') which always win over class rules
    • viewer started hidden via class="hidden"; now shown with style.display='block'
    Downloads