Version history
Accessible pagination on shared _directory-controls partial. The pagination block now uses a labeled nav region with aria-label, aria-label on Newer/Older links, aria-disabled=true on disabled controls, and aria-current=page on the page indicator — matching the /recent page accessibility treatment. Benefits category, subcategory, tag, and search result pages that reuse this partial.
Listings table query performance indexes. Added three indexes to the listings table — idx_listings_status on status, idx_listings_created_at on created_at, and a composite idx_listings_status_created on (status, created_at). These columns are queried frequently by the moderation queue, the Recently Added page, and the weekly highlights report. The indexes replace full table scans with index seeks as the directory grows.
Accessible pagination on /recent page. Recently Added pagination now uses a labeled nav region, shared pagination classes, aria-current=page on the current page indicator, and aria-disabled=true on unavailable Newer/Older controls. This makes the newest-resource archive easier to understand for screen readers and keyboard users while preserving the same browsing behavior.
Pagination on /recent page. The Recently Added page now supports page-by-page navigation with Previous/Next controls, letting visitors browse beyond the 12 most recent listings. Pages use rel=prev/next pagination links and canonical URLs that reflect the current page. The Browse all link now goes directly to /browse?sort=newest.
ItemList structured data added to /recent page. The Recently Added page now emits ItemList JSON-LD with listing names alongside position and url, bringing it in line with browse, category, subcategory, tag, and search result pages which all already include ItemList with names.
ItemList structured data now includes listing names in addition to position and url on category, subcategory, tag, and search result pages. Gives search engines the actual resource names for richer result previews instead of bare URLs.
Resource detail page schema upgraded to SoftwareApplication. The about block in the ItemPage JSON-LD on resource detail pages is now @type: SoftwareApplication with applicationCategory: BusinessApplication and operatingSystem: Web, replacing the generic Thing type. Helps Google surface richer search results for AI tools and software applications listed in the directory.
Fix humans.txt tech stack (MySQL for main DB, Supabase for auth only); finalize brace-expansion@5.0.8 override to address CVE-2026-14257 and CVE-2026-69152.
Submit criteria visible to logged-in users. The submit form now shows a collapsible 'What qualifies for the directory?' note, reminding submitters that resources must be AI-friendly, open to AI use, useful for AI creators, and live/accessible — reducing low-quality submissions before they reach the queue.
Bug fix: missing trailing comma in entries array fixed. Added Disallow: /auth/ to robots.txt to prevent auth routes from indexing.
Sitemap: added /recent page. The /recent route (added in v0.7.182) is now included in the dynamic sitemap.xml, so search engines can discover and crawl the Recently Added listings page alongside other site pages.
Mobile browser polish: theme-color meta tag for Android Chrome address bar, apple-touch-icon link for iOS home screen bookmarks, and a Report broken link mailto button on every resource detail page.
Moderator local AI-signal badges. Pending moderation cards now show local AI-friendly signal chips pulled from the submitted name, URL, description, taxonomy, keyword tags, and moderator notes, plus warning chips for explicit anti-AI wording. This gives moderators a faster evidence snapshot before approving ambiguous or premium submissions.
404 page structured data and noindex. Added WebPage JSON-LD and BreadcrumbList JSON-LD structured data to the 404 page, completing the structured data pattern used on all other public site pages. Also added noindex robots meta to prevent search engines from indexing error pages.
Recently Added page. Added a /recent route and template showing the 12 most recently approved AI-friendly listings, giving new visitors and returning users a quick way to discover the newest directory additions. Includes CollectionPage JSON-LD structured data and a breadcrumb trail.
Journal entry edit and delete. Added edit and delete controls for individual journal entries on resource pages. Users can update the text or visibility of an existing journal entry, or delete it entirely.
Private libraries for signed-in users. Added per-user saved sites, favorites, custom collections, private notes, and per-site journal entries with optional public visibility on resource pages.
Active sort state for assistive tech. Directory sort chips now add aria-current=page to the selected sort option on browse, search, category, subcategory, and tag listing pages. The UI already had a visual active chip; screen readers and other assistive tools now get the same state.
Admin pending queue pricing mix. The /adm overview now shows pending moderation listings split by Free, Ad-supported, and Premium, giving admins a quick signal when the queue is mostly premium items that need extra scrutiny before approval.
Visible breadcrumb trail on /search page. The search page had SearchResultsPage JSON-LD structured data but no visible breadcrumb navigation — replaced the bare '← Home' link with a proper <nav aria-label='Search breadcrumb'> trail (Home › Search › Results) matching the resource-breadcrumbs component pattern used on all other major pages.