Version history
Submit link in header navigation. Added a Submit link to the primary header nav, appearing after About for all visitors. The submit page is accessible to logged-in and logged-out users alike, so making it prominent in the top nav improves discoverability for submitters.
Moderation edit form accessible labels. The /mods edit form (Edit Listing page) now has proper for/id pairing on all text inputs, textarea, and select fields — Resource Name, URL, Description, and Status — so screen readers can programmatically associate labels with their inputs. Mirrors the fix applied to the submit form in v0.7.193.
Header navigation accessibility. The shared header nav now has aria-label=Primary navigation, and the Moderation, Admin, and signed-in profile links expose aria-current=page when active. This brings role-gated header links in line with Browse, For Artists, and About so keyboard and screen-reader users get consistent page context.
Search input accessible labels. Added aria-label to the search input on the homepage and /search page so screen readers can identify the field purpose without relying on visible placeholder text alone.
Random preview page noindex. Added noIndex:true and canonical URL to /random/preview so transient preview pages don't get indexed as duplicate content.
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.