Skip to content

Open issues sweep: validation types, incremental build, added dates, feeds, monthly re-verify, SEO and a11y fixes - #124

Merged
TMHSDigital merged 8 commits into
mainfrom
fix/issue-batch-oct22
Oct 22, 2026
Merged

TMHSDigital merged 8 commits into
mainfrom
fix/issue-batch-oct22

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Seven commits working through the open issues. Every commit ran npm test, npm run validate and a full build; the incremental build was compared byte for byte against a clean one. The ledger section docs/review-ledger.md (2026-10-22) has the full record, including what was deliberately not changed.

Validation and parser

Catalog data

Site

Build and tooling

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

TMHSDigital and others added 8 commits October 21, 2026 23:19
…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>
@TMHSDigital
TMHSDigital merged commit 1e1cfb8 into main Oct 22, 2026
3 checks passed
@TMHSDigital
TMHSDigital deleted the fix/issue-batch-oct22 branch October 22, 2026 09:55
This was referenced Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Link check: 3 sources need a look

1 participant