« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data
AgeCommit message (Collapse)Author
16 hoursdata: Adventure (wip!!!! wip!!!! wip!!!! wip!!!!)(quasar) nebula
16 hoursdata, infra: better CacheableObject prototype inheritence(quasar) nebula
Basically, properties (as written in source code) are only registered once EVER, instead of "also" on subclasses, which was previously the case - we were literally copying over the descriptors and then re-evaluating as though they were new. That's the goal, but to make it happen, we had to redo how default property values are initialized. Things no longer self- prepare by making a "storage" for all their cached values with null, or defaults, filled in - instead they create a new object which inherits those defaults from their prototype. This object respectively has the prototype of the superclass' prototype's defaults, and so on. A nice effect is that validating defaults against update.validate specs now happens during prototype finalization, instead of every time any instance is instantiated. We also had to do the same kind of inheritence shenanigans with the full propertyDescriptors specs themselves. The real-world performance boost for this is probably more or less zero RIGHT NOW, because Thing subclassing is used crazy sparingly (and there's still work to make it really nice). But if [[Prototype]] chains don't really take memory, then possibly this cleans up a lot of extremely similar objects where every new Thing property multiplies memory usage across all instances of that thing, regardless how few actually set a value. Maybe! Who knows what V8 really optimizes, but maybe!
16 hoursdata, infra: actually sort subclasses after superclasses(quasar) nebula
critically necessary for literally any inheritence shenanigans
16 hoursdata: link flashes, acts, and sides directly(quasar) nebula
same as 67a936adc308a5bec6c969c90d8811fcbce3009b and 4362324b40da9daa54c9c6c3a821b0cccaec71a0 (combined into one and with more save() cleanup)
33 hourscan't commit this(quasar) nebula
2025-11-04language: language.orderStringOptions() / language.$order()(quasar) nebula
2025-10-25data: let secondary releases' artists differ from main release(quasar) nebula
2025-10-25data, content: Track.artistTextInLists(quasar) nebula
2025-10-24checks: reportDirectoryErrors: consider blank directory missing(quasar) nebula
2025-10-24data: use subdocs for artist aliases(quasar) nebula
They're still exposed as Artist instances. This commit only changes how those instances come to be, and are bound with the main artist.
2025-10-24data: Thing.getReference: include name in missing directory throw(quasar) nebula
2025-10-23content, data: Track.previousProductionTracks(quasar) nebula
2025-10-23language: preserve and surface lone-item templates(quasar) nebula
2025-10-21language: countWords()(quasar) nebula
2025-10-21language: formatMonthDay()(quasar) nebula
2025-10-20language: drop externalLinkSpec prop, just import directly(quasar) nebula
this lets us totally drop "internal" but exported function initializeLanguageObject - we'll still need to provide the external link spec in essentially the exact same way in the future, when external link spec is dynamic, but presently there's no need for this function or providing at all.
2025-10-20language: compositional withStrings, update strings_htmlEscaped(quasar) nebula
2025-10-20html, language: html.escape()(quasar) nebula
2025-10-20content: drop 'he' module(quasar) nebula
2025-10-15cacheable-object: ugh, embarrassing...(quasar) nebula
2025-10-15uninteresting eslint fixes(quasar) nebula
2025-10-15yaml: fix misref for dynamic field combination error messages(quasar) nebula
2025-10-15toReversed, toSorted miscellany(quasar) nebula
2025-10-08data: TrackSection.{directorySuffix,suffixTrackDirectories}(quasar) nebula
2025-10-08data: withMainReleaseTrack: main releases only(quasar) nebula
2025-10-07content, data: generateName, Track.nameText(quasar) nebula
2025-10-04data: remove not-applicable album Referencing Sources error(quasar) nebula
2025-10-04content: remove language.countCoverArts()(quasar) nebula
2025-10-03checks: use find() decorators in reportContentTextErrors too(quasar) nebula
2025-10-03checks: factor out find() decorators, annotate multipleNameMatches(quasar) nebula
2025-10-03data, checks: Track.{referenced,sampled}Tracks: main releases only(quasar) nebula
Cheats a degree of immunity to secrelease shenanigans by making (musical) track references universally *never* point to a track with a "Main Release" field (i.e. a seconday release). Still, #checks continues to detect and error when you're really pointing to a secondary release, and shouldn't be doing that.
2025-10-03data, checks: don't let Main Release be secrelease's own album(quasar) nebula
2025-10-03data, checks: fuzz "Main Release: same name single"(quasar) nebula
2025-10-03data: findOptions in compositions(quasar) nebula
2025-10-03sugar: onlyItem(quasar) nebula
2025-10-03data: "Main Release: same name single"(quasar) nebula
2025-10-02checks: check resolved mainReleaseTrack, too(quasar) nebula
2025-10-02data: Track.mainRelease, "Main Release: <album or track>"(quasar) nebula
2025-09-21find: kebab-fuzzy matches in content text(quasar) nebula
Outside content text, this doesn't cause miscapitalized references to slip past, but it does stop them from being specially reported i.e. highlighting which letters need to be updated or treating as more than just "nothing matches for this reference" generic errors. That's a TODO. Sorry! Gyeep!
2025-09-18data: Track.disableDate / Has Date: false(quasar) nebula
2025-09-16data: withAlwaysReferenceByDirectory: compare in kebab case(quasar) nebula
Resolves #283
2025-09-11content, data: Album.showAlbumInTracksWithoutArtists(quasar) nebula
2025-09-11data: TrackSection.countTracksInArtistTotals(quasar) nebula
2025-09-08data: Album.trackArtistText, Track.artistText(quasar) nebula
2025-09-03data: WikiInfo.canonicalMediaBase(quasar) nebula
2025-09-03data: ContentEntry.artists: extract implicit artist refs properly(quasar) nebula
2025-08-26data, content, css: Artwork.showFilename(quasar) nebula
2025-08-23data: withAnnotationParts: don't explode on empty annotation?(quasar) nebula
2025-08-23data: Track.needsLyrics(quasar) nebula
2025-08-22yaml: never call transform() on null(quasar) nebula