| Age | Commit message (Expand) | Author |
| 30 hours | content: gTIPPreviousProductionLine: fix missing list format preview | (quasar) nebula |
| 31 hours | upd8: reportDirectoryErrors messaging | (quasar) nebula |
| 31 hours | checks: reportDirectoryErrors: consider blank directory missing | (quasar) nebula |
| 31 hours | search: aliasNames -> artistAliases | (quasar) nebula |
| 31 hours | data: use subdocs for artist aliases | (quasar) nebula |
| 31 hours | data: Thing.getReference: include name in missing directory throw | (quasar) nebula |
| 42 hours | content, data: Track.previousProductionTracks | (quasar) nebula |
| 43 hours | content: generateNearbyTrackList | (quasar) nebula |
| 43 hours | content: generateTrackListItem: showArtists: 'auto' | (quasar) nebula |
| 43 hours | html, infra: html.inside(), html.findInside() | (quasar) nebula |
| 43 hours | language: preserve and surface lone-item templates | (quasar) nebula |
| 2 days | content: image: slight wiggle room in srcset natural sizes | (quasar) nebula |
| 2 days | content: image, generateCoverArtwork: responsive resolution | (quasar) nebula |
| 3 days | content: linkThing: fix not passing preferShortName through | (quasar) nebula |
| 4 days | content: transformContent: marked 13 compat, custom inline render | (quasar) nebula |
| 4 days | content: generateCommentaryIndexPage: use npm word-count instead | (quasar) nebula |
| 4 days | content: generateCommentaryIndexPage: count facing words | (quasar) nebula |
| 4 days | language: countWords() | (quasar) nebula |
| 4 days | html: resolve(..., {normalize: 'plain'}) | (quasar) nebula |
| 4 days | content: generate{Absolute,Relative}Datetimestamp: always tooltip | (quasar) nebula |
| 4 days | content: generateAbsoluteDatetimestamp: {minimal,year}-difference | (quasar) nebula |
| 4 days | language: formatMonthDay() | (quasar) nebula |
| 5 days | language: drop externalLinkSpec prop, just import directly | (quasar) nebula |
| 5 days | language: compositional withStrings, update strings_htmlEscaped | (quasar) nebula |
| 5 days | html, language: html.escape() | (quasar) nebula |
| 5 days | html: stricter escapeAttributeValue | (quasar) nebula |
| 5 days | content: drop 'he' module | (quasar) nebula |
| 5 days | no-source-change meaningfulish npm updates | (quasar) nebula |
| 5 days | pin node dependencies | (quasar) nebula |
| 5 days | add @eslint/js as explicit dependency, hopefully | (quasar) nebula |
| 5 days | content: gAIPArtworksChunkItem: only handle artwork contributions | (quasar) nebula |
| 5 days | content: gAIPArtworksChunkItem: "fix" album cover as track cover | (quasar) nebula |
| 10 days | content: generateListingPageSameTargetListingsLine | (quasar) nebula |
| 10 days | remove ignored package.json lines disabling tap coverage | (quasar) nebula |
| 10 days | test: update behavior of empty string in string slot | (quasar) nebula |
| 10 days | validators, test: permissive typeless validateReference() | (quasar) nebula |
| 10 days | test: validators: here we go again | (quasar) nebula |
| 10 days | test: update mini CacheableObject constructor setups | (quasar) nebula |
| 10 days | test: update linkWikiDataArrays call | (quasar) nebula |
| 10 days | test: obliterate wholescale thing surface tests | (quasar) nebula |
| 10 days | sugar: make getNestedProp resilient against missing properties | (quasar) nebula |
| 10 days | test: remove #track withAlbum (unit) | (quasar) nebula |
| 10 days | cacheable-object: ugh, embarrassing... | (quasar) nebula |
| 10 days | test: remove withParsedCommentaryEntries (unit) | (quasar) nebula |
| 10 days | test: update linkContribution (unit) | (quasar) nebula |
| 10 days | test, urls: get content-function unit test infra working, probably | (quasar) nebula |
| 10 days | blindly update tap | (quasar) nebula |
| 10 days | test: remove all existing snapshot tests | (quasar) nebula |
| 10 days | npm audit | (quasar) nebula |
| 10 days | eslint 9.27.0 -> 9.37.0 | (quasar) nebula |