| Age | Commit message (Expand) | Author |
| 2 days | data: exitWithoutUpdateValue: validate input | (quasar) nebula |
| 2 days | data: Track: chop withCoverArtistContribs | (quasar) nebula |
| 2 days | data: Track: chop withTrackArtDate | (quasar) nebula |
| 2 days | data: Track: chop withDate | (quasar) nebula |
| 2 days | data: Track: chop withHasUniqueCoverArt | (quasar) nebula |
| 2 days | data: spot fixes | (quasar) nebula |
| 2 days | cacheable-object, data: depend on computed values; initial compat | (quasar) nebula |
| 3 days | composite: nicer input validation error messaging | (quasar) nebula |
| 3 days | data: factor out getOutputName in withPropertyFrom... | (quasar) nebula |
| 3 days | data: ~The Forever Fieldtrip~ (no) more adventures | (quasar) nebula |
| 3 days | data: Artist: fix always having avatar artwork | (quasar) nebula |
| 3 days | data, yaml: save() -> connect(), Thing.wikiData & friends | (quasar) nebula |
| 3 days | data, infra: auto-inherit yaml document specs | (quasar) nebula |
| 3 days | data: CacheableObject: fix hasPropertyDescriptor | (quasar) nebula |
| 3 days | data: Adventure (wip!!!! wip!!!! wip!!!! wip!!!!) | (quasar) nebula |
| 3 days | data, infra: better CacheableObject prototype inheritence | (quasar) nebula |
| 3 days | data, infra: actually sort subclasses after superclasses | (quasar) nebula |
| 3 days | data: link flashes, acts, and sides directly | (quasar) nebula |
| 3 days | can't commit this | (quasar) nebula |
| 2025-11-04 | language: language.orderStringOptions() / language.$order() | (quasar) nebula |
| 2025-10-25 | data: let secondary releases' artists differ from main release | (quasar) nebula |
| 2025-10-25 | data, content: Track.artistTextInLists | (quasar) nebula |
| 2025-10-24 | checks: reportDirectoryErrors: consider blank directory missing | (quasar) nebula |
| 2025-10-24 | data: use subdocs for artist aliases | (quasar) nebula |
| 2025-10-24 | data: Thing.getReference: include name in missing directory throw | (quasar) nebula |
| 2025-10-23 | content, data: Track.previousProductionTracks | (quasar) nebula |
| 2025-10-23 | language: preserve and surface lone-item templates | (quasar) nebula |
| 2025-10-21 | language: countWords() | (quasar) nebula |
| 2025-10-21 | language: formatMonthDay() | (quasar) nebula |
| 2025-10-20 | language: drop externalLinkSpec prop, just import directly | (quasar) nebula |
| 2025-10-20 | language: compositional withStrings, update strings_htmlEscaped | (quasar) nebula |
| 2025-10-20 | html, language: html.escape() | (quasar) nebula |
| 2025-10-20 | content: drop 'he' module | (quasar) nebula |
| 2025-10-15 | cacheable-object: ugh, embarrassing... | (quasar) nebula |
| 2025-10-15 | uninteresting eslint fixes | (quasar) nebula |
| 2025-10-15 | yaml: fix misref for dynamic field combination error messages | (quasar) nebula |
| 2025-10-15 | toReversed, toSorted miscellany | (quasar) nebula |
| 2025-10-08 | data: TrackSection.{directorySuffix,suffixTrackDirectories} | (quasar) nebula |
| 2025-10-08 | data: withMainReleaseTrack: main releases only | (quasar) nebula |
| 2025-10-07 | content, data: generateName, Track.nameText | (quasar) nebula |
| 2025-10-04 | data: remove not-applicable album Referencing Sources error | (quasar) nebula |
| 2025-10-04 | content: remove language.countCoverArts() | (quasar) nebula |
| 2025-10-03 | checks: use find() decorators in reportContentTextErrors too | (quasar) nebula |
| 2025-10-03 | checks: factor out find() decorators, annotate multipleNameMatches | (quasar) nebula |
| 2025-10-03 | data, checks: Track.{referenced,sampled}Tracks: main releases only | (quasar) nebula |
| 2025-10-03 | data, checks: don't let Main Release be secrelease's own album | (quasar) nebula |
| 2025-10-03 | data, checks: fuzz "Main Release: same name single" | (quasar) nebula |
| 2025-10-03 | data: findOptions in compositions | (quasar) nebula |
| 2025-10-03 | sugar: onlyItem | (quasar) nebula |
| 2025-10-03 | data: "Main Release: same name single" | (quasar) nebula |