Repository navigation
Open issues sweep: validation types, incremental build, added dates, feeds, monthly re-verify, SEO and a11y fixes - #124
Merged
Conversation
…ts, one link-scheme rule, build-time duplicate id check - frontmatter: a trailing ' # comment' is dropped outside quotes (#79); a comment or blank line between a key and its block list no longer breaks the list (#84); TEMPLATE.md moves its inline guidance to comment lines - validate: new V24 checkFieldTypes rejects tags/subcategories/formats that parsed as text and quoted booleans, with the fix in the message (#79) - shared: EXTERNAL_SCHEME_RE and ANY_SCHEME_RE used by validate, the link resolver and the page checks; an ftp:/data:/javascript: link is rejected everywhere with the scheme named; a line-start autolink is not raw HTML (#83) - build: a duplicate id fails the build instead of overwriting a page (#81) Closes #79, #81, #83, #84 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…d from git, check-links robustness, chip radiogroup, small UX fixes - shared: sponsorButtonHtml is a static link with an inline heart, so no page loads github.com before first paint (#101) - shared: baseHeadHtml gives entry, stack, freshness and home pages the same canonical/sitemap/feed/theme-color/og:image set, with a test (#104) - exports: sitemapXml is pure and every URL has a lastmod: the build date for home and freshness, the later of verified/walked and the file's last commit date for entries and stacks (one git log per build, falls back without git) (#108) - check-links: --stale-days is validated before any fetch; GitHub API failures go to a 'Could not check (N skipped)' section that is not a problem, and a rate limit lists every repository left unchecked (#82) - app: category chips are a radiogroup with aria-checked and arrow keys; the scroll position shows as a 'You are in' line instead of a second chip state; form-control borders use --control-line at 3:1+ in both themes (#107) - app: category and sort changes push history (Back works), keystrokes replace, both in try/catch; '/' ignores Ctrl/Cmd/Alt; one spelling (Licence) in the UI; the perspective select is 'Camera view' with a visible note (#106) Closes #82, #101, #104, #106, #107, #108 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- 24 entries: the body heading now equals `name`, and new check V25 (checkTitleMatchesName) keeps them equal - sonniss-gdc: the name is quoted so its hashtag is not read as a comment; the parser now reports an unquoted ` #word` instead of truncating silently - godotsteam: https body link; cmu-mocap and makehuman note that their hosts serve http only (re-checked 2026-10-22), so the url stays http - fab-free-content, megascans-starter-content, paragon-characters: a Notes line on the search-page url and where to go if Fab changes its parameters - maintenance from the 2026-10-19 link check (#77): microsoft-rocketbox inactive -> archived, octave-ui-sounds inactive, ue5coro archived (final push 2026-10-16; the README states the archival), each with a dated note Closes #77 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…d you mean", pinned actions, CITATION.cff, dx items - build: no dist wipe; one writer creates each directory once, writes a file only when its bytes changed, and prunes what an earlier build left, so the output equals a clean build's. --clean wipes first. Entry errors stop the build before stacks load. Measured on this drive: clean 25.0 s, no-change rebuild 1.6 s, 432-page rebuild 8.3 s (#80) - entry pages: <title> is "name · licence" (name alone when over 60), the description leads with licence, commercial stance and credit and clips at a sentence under 155; og:title/og:description keep the full text; stack pages clip too; the page check fails a title over 60 or a description over 160 (#103) - styles: @media print block for a clean licence record, light tokens, source URLs spelled out, chrome hidden (#105) - app: an empty search shows "Did you mean" buttons from closestEntries, which now also matches a one-word query against each word of a name (#109) - ci: actions pinned to commit SHAs with the version as a comment (#88) - CITATION.cff so GitHub offers "Cite this repository" (#114) - check-links: no retry after a full timeout; one Node statement (22+, CI and .nvmrc use 24); CONTRIBUTING says ungrouped formats are not filterable; new-entry's last step names the file (#86) Closes #80, #86, #88, #103, #105, #109, #114 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- site/lib/reverify.mjs: pickBatch selects live entries last checked more than 150 days ago (or never), oldest first, a tenth of the catalog per month so it cycles in about ten; batchIssueMarkdown writes the checklist in the shape of #54-#57 (file, source URL, recorded licence, age) - site/reverify-batch.mjs: the CLI, with --report and --size, count= to GITHUB_OUTPUT - .github/workflows/reverify.yml: first of the month and on demand, opens or updates one issue labelled help wanted / good first issue; skipped while nothing is due (the July 2026 checks fall due in December) - documented in site/README.md, CONTRIBUTING.md and ROADMAP.md; tests cover the selection rule and the issue text Closes #93 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…, "New in the last 30 days", sort by added - catalog: `added: YYYY-MM-DD` on all 415 entries, backfilled once from each file's first commit (git log, oldest touch per path); TEMPLATE.md carries it and new-entry fills in today's date; it never changes afterwards - validate: `added` is required; V26 checkAddedDate wants a real date not in the future (added <= verified is not enforced: six entries were researched before they were committed) - exports: feed.xml is now the new-sources feed keyed on `added`, and reverified.xml the recently-verified feed keyed on `verified`; both are announced in every page head; catalog.csv and data.json carry `added` - home: "New in the last 30 days: N" line under the freshness line, the newest named and the rest linked to the new "Recently added" sort - docs: site/README.md and CONTRIBUTING.md describe the field and the feeds Closes #90 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…is sweep - .github/workflows/release.yml: monthly and on demand, builds, tags vYYYY.MM.DD and creates a release with data.json, catalog.csv, feed.xml, reverified.xml and llms.txt attached; notes from the newest ledger section; an existing tag is left alone - data.json carries `version` (the same calendar tag; CATALOG_VERSION overrides) - pages.yml checks out full history so the sitemap's lastmod dates are real - docs/review-ledger.md: the 2026-10-22 section Closes #113 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…guard, absolute issue link, filtered suggestions - build: checkPages resolves link targets against the set of files this build produced, so an incremental build fails on a link to a removed entry instead of passing against last time's page and then pruning it - frontmatter: a block-list item cut at " #word", or reduced to nothing by a leading #, is reported like a key: value line is - reverify: the CONTRIBUTING link is absolute (a relative link in an issue body resolves under /issues/ and 404s) - app: "Did you mean" draws only from entries the category and other filters would show, so a suggestion never leads back to the empty state Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This was referenced Oct 22, 2026
Closed
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Seven commits working through the open issues. Every commit ran
npm test,npm run validateand a full build; the incremental build was compared byte for byte against a clean one. The ledger sectiondocs/review-ledger.md(2026-10-22) has the full record, including what was deliberately not changed.Validation and parser
"true"is named in the message (validate: list and boolean fields are never type-checked; a trailing# commentturnstagsinto a string and the template ships one #79)# commentsstripped, block lists after a comment line, an unquoted#wordreported instead of truncated (validate: list and boolean fields are never type-checked; a trailing# commentturnstagsinto a string and the template ships one #79, frontmatter: a comment line between a key and its block list produces a misleading error #84)ftp:/data:/javascript:named (links: URL-scheme rules disagree across validate, links.mjs and page-checks #83)npm run buildtoo (build: duplicate entry ids are not detected by the build itself; the second page silently overwrites the first #81)name(24 entries aligned) (catalog: normalise 12 licence values to SPDX ids and fix a few small data defects #95, partial; see the issue comment)addedis required, a real date, not in the future (catalog: add anaddeddate so the feed and a "New this month" view can tell new entries from re-verifications #90)Catalog data
added: YYYY-MM-DDon all 415 entries, backfilled from each file's first commit (catalog: add anaddeddate so the feed and a "New this month" view can tell new entries from re-verifications #90)Site
baseHeadHtmlfor every page type (site: entry, stack and freshness pages have a thinner<head>than the home page (no theme-color, feed link, og:image size) #104); sitemaplastmodfrom git (seo: sitemaplastmoduses the licence date for entries and is missing for the home and freshness pages #108)<title>"name · licence", description with licence/stance/credit, page check at 60/160 (seo: entry page titles and descriptions overrun search-result limits (62 titles over 60 chars, 319 descriptions over 160) #103)aria-pressed(selected) andaria-current(scrolled-into) states at once #107)/ignores modifiers, one spelling, "Camera view" note (ux: small interaction fixes — Back button, "/" shortcut with modifiers, mixed Licence/License spelling, "View" label #106); "Did you mean" on an empty search (ux: "Did you mean" suggestions in the empty search state, reusing the 404 page's closest-match logic #109)feed.xml(new sources, byadded) andreverified.xml(byverified); "New in the last 30 days" line; "Recently added" sort (catalog: add anaddeddate so the feed and a "New this month" view can tell new entries from re-verifications #90)Build and tooling
--cleanstill available (build: 94% of build time is directory churn (wipe dist, mkdir per entry); 32 s here, minutes on slow disks #80)--stale-daysvalidated up front, API failures listed but not counted, no retry after a full timeout (check-links: crashes on a bad--stale-days, and GitHub API failures are reported as catalog problems #82, dx:check-linksretries 20 s timeouts in full, and the local loop needs a documented Node version #86)CITATION.cff(docs: add CITATION.cff (and optionally a Zenodo DOI) so the catalog can be cited as a dataset #114); monthlyreverify.yml(automation: open a monthly "re-verify batch" issue listing the oldest-checked entries #93);release.ymldataset releases withversionin data.json (distribution: tag versioned dataset releases with data.json and catalog.csv attached #113)Closes #77, #79, #80, #81, #82, #83, #84, #86, #88, #90, #93, #101, #103, #104, #105, #106, #107, #108, #109, #113, #114
Not in this PR: #3 (branch protection is a repository setting), #72 (needs a private contact address to name), the licence-value decision on #95.
🤖 Generated with Claude Code