Skip to content

Releases: haruhimemoe/pool

Release list

v0.3.0

Choose a tag to compare

@dvhsh dvhsh released this 06 Oct 01:06
ce681ce

Added

  • reorderSlot(pool, mod, beatmapId, to): move a map within its own bucket (or the no-slot group) without changing its mod, renumbering the group 1..N. packs.haruhime.moe's map drag and drop uses this.

v0.2.0

Choose a tag to compare

@dvhsh dvhsh released this 28 Sep 08:33
e0be672

Added

  • @haruhimemoe/pool/service, the contract between pools.haruhime.moe and packs.haruhime.moe: packInputSchema, poolsPackBodySchema (the PUT /api/service/pools/{ref} body), poolsRefSchema, poolsSyncAnswerSchema, poolsStatsAnswerSchema, MAX_DESCRIPTION_LENGTH and the visibilities. Each app had its own copy, and pools couldn't check the description limit.
  • @haruhimemoe/pool/content-filter, a second entry point with hasBlockedLanguage(text): the slur and hate slogan blocklist packs.haruhime.moe and pools.haruhime.moe each had a copy of, unchanged. The main entry point never loads its word list.
  • changesStarRating(mods), ratingMods(mods) and speedRate(mods): which mods change a star rating, and how fast DT (1.5) and HT (0.75) play, with NC read as DT and DC as HT. packs.haruhime.moe and pools.haruhime.moe had their own copies.
  • displayPoolName(name): a pool name safe to show and store, with control characters and line breaks turned into spaces and bidi controls removed. Keys carry names as typed, so the README now says to treat them as untrusted.

Changed

  • checkBucketCode refuses a code that is another slot's code plus a number (NM1 next to NM, RC next to RC1) with the new clash error, so addBucket and renameBucket refuse it too. With both codes, slotLabel prints NM slot 1 as NM1, which parsePoolText reads as NM1's slot 1. Pools that already have such codes still validate and open.
  • parsePoolText reports a line that would create such a code with the new clash error code.
  • checkBucketCode refuses a code with no letter (12) with the new digits error. parsePoolText already read such lines as beatmap IDs or a numbered list, so their labels didn't read back.

Fixed

  • parsePoolText splits lines on a lone CR, U+2028 and U+2029 too. Before, every line after the first was lost without an error.
  • parsePoolText reads a slot line whose beatmap is followed by a comma (NM1 129891, Freedom Dive), as ID lines already did.
  • planMerge counts the same slot twice in incoming once, so it previews mergeSlots exactly. Before, one slot could be both added and replaced, and a slot pasted back to its current map was reported as replaced.
  • freemodSets and modSetsFor return frozen sets, at both levels. Before, a caller could change the shared arrays for every other module.
  • moveBucket (and withBuckets) put the slots in the new pool order. Before, they kept the old order, unlike every other edit and decodePackKey.