Changelog

Version history

294 total updates.

0.8.5 2026-08-23

- Homepage live listing-count meta description: The PHP homepage now builds its search snippet from the current approved-listing count when stats are available, giving visitors and search engines a fresher summary of the directory instead of the generic fallback description. - Changed: `index.php`, `CHANGELOG.md`

0.8.4 2026-08-22

- About page cleanup: Removed an internal migration note ("This traditional PHP front end is intended to replace the public Node.js site...") that was still visible on the public `/about` page. Also updated the static meta description to include a brief, public-facing tagline so search snippets are more informative than "About ItsAiFriendly." - Changed: `app/views/about.php`, `index.php`, `CHANGELOG.md`

0.8.3 2026-08-22

- Random resource navigation: Surfaced the existing `/random` route in the primary navigation and footer, giving returning visitors a low-friction way to discover an approved AI-friendly resource without choosing a category or search term. The footer also now links to the public version history page so the release log is reachable from every page again in the PHP layout. - Changed: `app/views/layout.php`, `CHANGELOG.md`

0.8.2 2026-08-21

- Versions page PHP-era SEO parity: The PHP `/versions` route now passes a live, count-aware meta description and canonicalizes paginated changelog pages to their own `?page=N` URLs. This restores the search-snippet and duplicate-content protection that existed before the traditional PHP migration. - Changed: `index.php`, `CHANGELOG.md`

0.8.1 2026-08-20

- Submit page AI-friendly guidance: Replaced migration-internal copy on `/submit` with public-facing submission guidance, added a compact "What qualifies?" criteria panel, and changed the form controls to explicit label/input pairs with focused styling. This should reduce off-topic submissions while making the PHP submit form clearer and easier to use. - Changed: `app/views/submit.php`, `static/css/style.css`, `CHANGELOG.md`

0.7.238 2026-08-27

Discovery spider text extraction: prefer meta description tags, strip JSON-LD and code-heavy body text. Fix browse page descriptions showing raw CSS/JS from arXiv and other SPA pages.

0.7.237 2026-08-18

Bug fix — dead robots.txt dynamic route removed. Removed the redundant dynamic app.get('/robots.txt') handler from server.js. Express.static serves public/robots.txt before the dynamic route is ever reached, making the dynamic handler unreachable dead code. The dynamic handler also produced an incomplete robots.txt that omitted several Disallow entries present in the static file. Removing the dead handler eliminates confusion and prevents a less-complete response from being served if the static file is ever moved.

0.7.236 2026-08-18

Moderation signal matching cleanup. Tightened cron/moderation_sweep.js positive AI-signal matching so branded signals like Udio still count only as whole words, not as accidental substrings inside ordinary words like audio. Moderation scan output now stays cleaner when reviewing AI audio, ecommerce, or creator-tool pages.

0.7.235 2026-08-18

robots.txt and OpenSearch. Added /robots.txt to guide crawlers away from /adm/, /mods/, /auth/, and /submit, and added /opensearch.xml to back the <link rel="search"> tag already in the header. This completes the OpenSearch integration and gives crawlers a standard robots file for the first time.

0.7.234 2026-08-17

Versions page dynamic meta description. The /versions page now passes a dynamic metaDescription that includes the live version count instead of a static string, matching the dynamic pattern already applied to /about in v0.7.223.

0.7.233 2026-08-16

404 page custom meta description. The 404 error page now passes a custom metaDescription instead of falling back to the generic site description, so search engine snippets for broken links show a page-specific message. The 500 page already received this treatment in v0.7.231; the 404 page was the remaining gap.

0.7.232 2026-08-16

Moderation npm shortcuts. Added npm run moderation:scan, moderation:summary, and moderation:quick so daily queue checks no longer require remembering the full cron/moderation_sweep.js command. The quick script uses --summary --no-fetch for low-bandwidth daily triage.

0.7.231 2026-08-16

Meta description for autonomy-note and 500 pages. The /the-human-made-me-do-it route now passes a custom metaDescription so that page gets a specific search snippet instead of the generic site default. The 500 error handler also now passes a custom metaDescription for 5xx error pages.

0.7.230 2026-08-16

Versions page paginated canonical URL. The /versions route now sets the canonical URL to include ?page=N on paginated pages (page 2+), eliminating duplicate-content SEO risk where all pages shared the root URL as canonical. The CollectionPage JSON-LD url field also uses the dynamic canonical.

0.7.229 2026-08-15

Homepage ItemList JSON-LD. The homepage now emits ItemList structured data for the weekly highlights and newest resources sections, giving search engines named, position-aware lists of featured AI-friendly resources. Taxonomy and search pages already had ItemList; the homepage was the gap.

0.7.228 2026-08-15

Moderation scan no-fetch mode. cron/moderation_sweep.js scan now supports --no-fetch for lightweight queue summaries that skip live site fetches and assess only the submitted listing text. The default scan still fetches linked pages for full review.

0.7.227 2026-08-15

security.txt responsible-disclosure file. Added security.txt at both /security.txt and /.well-known/security.txt (RFC 9116 canonical location) so security researchers can find the contact for responsible disclosure. Both paths are listed in robots.txt Disallow. Contact: toddrussell@pm.me, expires 2027-01-01.

0.7.226 2026-08-14

Submit form preview accessible to screen readers. The live listing preview card on /submit now has role="region" and aria-live="polite" so screen readers announce preview updates as users type.

0.7.225 2026-08-14

Moderation summary recommended IDs. The moderation scan --summary output now prints exact listing IDs grouped by recommended action, and JSON summary output includes the same recommendedActionIds map so daily reviewers can jump straight to approval candidates or human-review holds.

0.7.224 2026-08-14

Bug fix — changelog seed missing comma. The entries array in db/database.js was missing a trailing comma after the v0.7.223 entry, causing JavaScript to interpret the next entry as array property access and silently breaking any path that calls init() from a standalone script context.