Changelog

Version history

294 total updates.

0.8.25 2026-08-30

- manifest.json logo dimensions corrected: The PWA manifest referenced the logo.png as 512×512, but the actual PNG is 1408×744. Corrected the `sizes` field to `1408x744`. Minor correctness fix — the manifest's icon declaration should accurately describe the referenced image. - Changed: `static/manifest.json`, `CHANGELOG.md`

0.8.24 2026-08-29

- RFC 9116 security.txt canonical route: Added `/.well-known/security.txt` as a served PHP route, reading from the existing `static/security.txt` file. This covers the RFC 9116 canonical location. The robots.txt already disallows both `/.well-known/security.txt` and `/security.txt`; the security.txt content at both paths is now correct for automated security scanners that follow the RFC. - Changed: `index.php`, `CHANGELOG.md`

0.8.23 2026-08-28

- WebSite JSON-LD with SearchAction on homepage: The homepage now emits `WebSite` structured data with a `SearchAction` targeting `/search?q={search_term_string}`. This enables Google's Site Links search box in search results and gives the homepage a second structured data type alongside the existing `WebPage` default from the layout. The search box appears below the main site link in desktop results when the query pattern is recognized. - Changed: `index.php`, `CHANGELOG.md`

0.8.22 2026-08-28

- CollectionPage JSON-LD for /versions: The versions history page now emits `CollectionPage` JSON-LD with an `ItemList` of all changelog entries, each `ListItem` linking to its in-page anchor (`#v0.8.22`, etc.). Version entries in the HTML also gained `id` anchors so the structured data links resolve correctly. This gives search engines a named, ordered list of the site's full version history. - Changed: `index.php`, `app/views/versions.php`, `CHANGELOG.md`

0.8.21 2026-08-28

- ItemList structured data for directory listing pages: The shared `partials/directory-page.php` partial now emits `ItemList` JSON-LD for all listing page types (browse, search, recent, category, subcategory, and tag pages). Each `ListItem` entry includes the resource URL and 1-based position, giving search engines a machine-readable enumeration of the directory's listing pages. Previously these pages had no structured data despite being the site's most-indexed content. - Changed: `app/views/partials/directory-page.php`, `CHANGELOG.md`

0.8.20 2026-08-28

- Discovery spider FK constraint fix: Fixed two bugs causing "Cannot add or update a child row" errors when promoting discovered listings. `taxonomy_for()` defaulted to the non-existent `music/general` subcategory pair; it now defaults to `music/radio` (a real subcategory). The `promote()` function's subcategory fallback chain was also strengthened to try exact match → same-sub-any-cat → first-sub-of-cat → first-sub-in-system before giving up. Previously `voicetoinstrument.com` and `TTS WebUI` crashed on promotion. - Changed: `cron/discovery_spider.py`, `CHANGELOG.md`

0.8.19 2026-08-28

- Discovery spider fetched-page text fix: Fixed the Python discovery spider's homepage fetch path so successful fetches return the cleaned page text it just extracted. A stale variable name could crash dry-run or live discovery after the first candidate fetch, blocking the daily AI-friendly resource supply check before it reached scoring or staging. - Changed: `cron/discovery_spider.py`, `CHANGELOG.md`

0.8.18 2026-08-27

- BreadcrumbList structured data + HTML breadcrumbs for taxonomy pages: Category, subcategory, and tag pages now emit `BreadcrumbList` JSON-LD in `<head>` and render a plain-text breadcrumb trail below the header (Home / Category / Subcategory / Tag). This gives search engines clear hierarchical page context for deep taxonomy pages and helps visitors orient themselves within the directory structure. - Changed: `index.php`, `app/views/layout.php`, `static/css/style.css`, `CHANGELOG.md`

0.8.17 2026-08-27

- Resource page JSON-LD structured data: The `/resource/{id}` detail page now emits `SoftwareApplication` JSON-LD structured data (`@type`, `name`, `description`, `url`, `applicationCategory`, `operatingSystem`, `offers`). This gives search engines machine-readable details about individual AI tools in the directory. The layout now supports a `jsonLd` variable that can be passed from any page. - Changed: `index.php`, `app/views/layout.php`, `CHANGELOG.md`

0.8.16 2026-08-27

- Dynamic meta descriptions for browse, search, and recent pages: `/browse` now includes the live listing count (e.g., "Browse 412 AI-friendly resources.") and adapts when a pricing filter is active. `/search` results pages now show the result count (e.g., "7 search results for 'chatgpt' on ItsAiFriendly."). `/recent` now includes the total approved count. Previously all three pages had static placeholder copy. - Changed: `index.php`, `CHANGELOG.md`

0.8.15 2026-08-26

- Footer parity with header and sitemap: The footer now links to `/recent` alongside Browse, Categories, Tags, Random, Version history, About, and Submit — matching the header nav and the `/sitemap.xml` entry already present for `/recent`. - Changed: `app/views/layout.php`, `CHANGELOG.md`

0.8.14 2026-08-26

- Directory pagination SEO signals: Public directory result pages now pass canonical URLs plus head-level `rel="prev"` and `rel="next"` links through the shared PHP layout. Browse, recent, search, category, subcategory, and tag pages now expose their paginated sequence to search engines instead of only showing Previous/Next links in the page body. - Changed: `index.php`, `CHANGELOG.md`

0.8.13 2026-08-25

- Dynamic meta descriptions for taxonomy pages: `/categories` and `/tags` now pass live category/subcategory/tag counts in their meta descriptions instead of static generic text. The data was already in the same fetch — this surfaces it for search snippets. - Changed: `index.php`, `CHANGELOG.md`

0.8.12 2026-08-25

- Open Graph, Twitter Card, and Web App Manifest: The shared PHP layout now emits `og:*`, `twitter:*`, and `theme-color` meta tags so shared links render with a proper title, description, and image preview on Discord, Slack, Twitter/X, and other social platforms. Also added a `manifest.json` at `/static/manifest.json` for PWA install prompts and mobile home-screen integration. - Changed: `app/views/layout.php`, `static/manifest.json`, `CHANGELOG.md`

0.8.11 2026-08-25

- robots.txt cleanup: Fixed two inconsistencies: `/versions` was listed in the XML sitemap (meaning it should be indexed) but also appeared in the Disallow list — those now agree, with `/versions` excluded from indexing. Also removed the broken `Human:` directive referencing `/humans.txt`; the actual humans.txt lives at `/static/humans.txt`. - Changed: `static/robots.txt`, `CHANGELOG.md`

0.8.10 2026-08-25

- Persistent light/dark theme toggle: The shared PHP layout now exposes the existing light-theme CSS through a header theme button. Visitor preference is saved in `localStorage`, respects light-mode system preference on first visit, and initializes in `<head>` to avoid a visible theme flash. - Changed: `app/views/layout.php`, `CHANGELOG.md`

0.8.9 2026-08-24

- Sitemap route added: `robots.txt` already referenced `/sitemap.xml` but no route served it. The PHP front controller now handles `/sitemap.xml` and emits a proper XML sitemap including all static pages, categories, subcategories, tags, and approved listings with correct priorities and change frequencies. Search engines that follow the `Sitemap:` directive in `robots.txt` will now find a working endpoint. - Changed: `index.php`, `app/repository.php`, `CHANGELOG.md`

0.8.8 2026-08-24

- humans.txt and OpenSearch descriptor updated for PHP era: `humans.txt` no longer says "Built with Node.js / Express / EJS / MySQL / Supabase" — it now correctly reflects the current PHP / traditional hosting stack. Also fixed the OpenSearch `Image` reference from a missing `/images/logo.png` to the existing `/static/favicon.svg` (SVG, already in place), so browser search plugin previews render properly. - Changed: `static/humans.txt`, `static/opensearch.xml`, `CHANGELOG.md`

0.8.7 2026-08-24

- Back-to-top control restored in PHP layout: Added the missing shared markup and lightweight scroll handler for the existing back-to-top styles, so long browse, search, category, tag, and version-history pages now regain the quick return-to-top action in the PHP front end. - Changed: `app/views/layout.php`, `CHANGELOG.md`

0.8.6 2026-08-23

- 404 page public message: Replaced the internal migration-era message ("That page does not exist in the traditional-site front end yet") with a clean public-facing message that suggests browsing or searching. Mirrors the about-page cleanup in v0.8.4. - Changed: `app/views/not-found.php`, `CHANGELOG.md`