Commit Graph
263 Commits
Author SHA1 Message Date
ash 4f8b098725 feat: add SDVX 6/7 omnimix support (#1722)
* SDVX: add EG + Nabla omnimix folders and tables

* SDVX: add exceed-omni and nabla-omni versions

* SDVX: add nabla-omni version when adding new charts

* add exceed-omni to songID 1352 because i missed it earlier oops
2026-07-28 17:01:08 +01:00
FallenDawnUltimate dba4942514 docs: fix table formatting (#1712) 2026-07-11 11:17:01 +01:00
zk 99fe1186ff fix: sdvx goals maxxive + ensure this is easier to fix in future (#1661)
* fix: goalfix

* fix: goalfix 2

* fix: fmt

* fix: script for fixing quests, too, ugh
2026-06-13 11:04:29 +01:00
zk a815848fb6 fix: ensure some sanity in .env files (#1640) 2026-06-04 21:17:39 +01:00
zk 978828d429 feat: move more unecessarily node things to bun (#1594) 2026-05-26 19:23:13 +01:00
zk dcb7c8d41b feat: recaptcha->hcaptcha (#1577) 2026-05-24 16:09:23 +01:00
zk 9bf3ad972d feat: highly optimise playcount-based queries (#1572) 2026-05-24 01:04:25 +01:00
zk e363bd2532 docs: migrate from mkdocs to mdbook (#1558)
* docs: migrate from mkdocs to mdbook

- Rename old mkdocs docs/ to old-docs/ for reference
- Set up new docs/ with mdbook (book.toml + src/ tree)
- Mirror full nav structure from mkdocs.yml into SUMMARY.md
- Add Justfile-docs with docs-serve, docs-build, docs-check, docs-install recipes
- Import Justfile-docs from root Justfile
- Rewrite .github/workflows/docs.yml: build step uses taiki-e/install-action
  to install mdbook, split into separate build + deploy jobs, PR builds
  run the check step too

* ci(docs): pin actions to SHAs, install mdbook via release binary

* ci(docs): install mdbook from apt instead of curling a release binary

* dev: replace mkdocs python stack with mdbook in dev image

* ci(docs): apt only works on Debian; restore release binary install for Ubuntu CI

* docs: fix duplicate file entries in SUMMARY.md

* docs: remove docs-install recipe

* docs: remove site-url from book.toml to fix asset loading

* dev: install mdbook from upstream release binary, not Debian apt

The Debian package (0.4.x+ds) strips bundled font assets, leaving the
built site without fonts/fonts.css. Use the upstream tarball (same as CI)
so the theme is complete. Handles x86_64 and aarch64.

* docs: vendor mdbook tarballs in dev/mdbook/, install from there

Dockerfile.dev uses COPY + tar to install the right arch at build time.
CI extracts the x86_64 tarball directly from the checkout.
No network access required for either — and no stripped-fonts Debian package.

* fix: unwritten
2026-05-22 20:43:07 +01:00
zk 05bc8733df ai bug audit 1 (#1545)
* fix: use highlights in tachi rival table

* fix: silentReject forgot pw

* fix: bms table sync typo

* fix: typo

* fix: mass typos

* fix: tests
2026-05-21 19:13:23 +01:00
nairobi 5606732ea1 feat: update arcaea for v3 + 6.14 seeds/data (#1478)
* fix: update arcaea's CCs

* fix: proper ID check

* rest of the owl

* I remembered to run tests

* there is no pale purple

* add phase 12

* remove particle arts from the mobile folder

* make arcaea an honorary GCM game it always wanted to be

* songpack=genre

* move displayVersion over to chart data

* disable FR/PM score validators

* Revert "disable FR/PM score validators"

This reverts commit da1cfbaa62.

* bullshit

* bullshit 2

* bullshit 2
2026-05-20 22:13:05 +01:00
zk 128bd1cfac feat: fix prometheus metrics and 409 spam (#1507) 2026-05-20 00:35:23 +01:00
zk 30fac40231 Reapply "ongeki lunatic/remaster split (#85)"
This reverts commit 426bb250d9.
2026-05-17 14:58:16 +01:00
zk fe76dad32d fix: backport all features from v2 that came in after merge 2026-05-17 12:53:26 +00:00
zk 426bb250d9 Revert "ongeki lunatic/remaster split (#85)"
This reverts commit a8c74cc665.
2026-05-17 13:31:32 +01:00
nairobi a8c74cc665 ongeki lunatic/remaster split (#85)
* ongeki lunatic/remaster split

* reorder

* fuck you

* FUCK YOU
2026-05-16 23:29:48 +01:00
zk acea12ec8a dasdatmeespresso 2026-05-16 19:53:23 +00:00
zk ad09fd33e5 fix: enprivatise more action fields 2026-05-10 17:04:25 +00:00
zk efcd7652ae rebel shell 2026-05-08 16:54:34 +00:00
zk b8a98b581c if it hurts to breathe (open a window) (#58)
* if it hurts to breathe (open a window)

* clocked it.

* must sleep tonight, sorry

* feat: leaderboard now shows #1 if you're #1 even in ties
2026-04-22 22:26:43 +01:00
zk 32a4e7392e feat: orphan score stuff (#56) 2026-04-22 18:45:00 +01:00
zk 2bc4c3a628 more (#53)
* checkpoint

* server compiles again

* fmt

* checkpoint

* last one out, get the lights

* euston station

* like, mostly good. I'm under the ocean right now.

* fix: some nonsense AI stuff

* fix: new eslint rules, and cleanup imports across the board

* feat: folder slug rewrite, email logic change, too

* fix: register must use txn not db

* checkpoint
2026-04-20 23:11:16 +01:00
zk edda03e916 sunday 5th apr (rip mark hollis) (#52)
* lots of work

* feat: move rg-stats in, ensure consistency in db queries

* the clocks dont work

* almost

* ok jesus been and gone now back to usual
2026-04-06 01:25:30 +01:00
zk 9aa3aee2a7 feat: migrate old scoreDerivers 2026-03-28 22:18:25 +00:00
zk e33db85253 untenable speed 2026-03-28 21:19:28 +00:00
zk fc3e2bf8e1 refactor: config becomes zod&not shit 2026-03-12 19:59:38 +00:00
zk 5ea514cfa8 feat: first v3 refactor 2026-03-11 00:06:28 +00:00
zk 613d43ee68 fix: wonder how this happened 2026-02-25 22:59:20 +00:00
beerpsi 009a8bddc2 [maimaidx] Update to CiRCLE (#1417)
* [maimaidx] Update to CiRCLE

* not quite sure what happened here

* add stuff to prism plus omnimix

* add tables and folders for PRiSM PLUS Omnimix

* fix: prism/omni should be inactive, prismplus/omni should not

* add search terms for jp songs

* fix: ensure that there are no fails >=80% and clears <80%

* Revert "fix: ensure that there are no fails >=80% and clears <80%"

This reverts commit 518ba0f2e2.

I forgot that modifying imported score data is a brittle and multi-step
process. I think we're kinda just screwed here.

* update to new rg-stats, and have validation rules for clears

* deps: update rg-stats to 1.2.1

* properly fix invalid scores

* seeds: Update seeds to 2026/01/30

* fix: ProcessPBs updates chart rankings already

* recalculate AP scores for maimai DX CiRCLE

* chore: lint

* chore: lint 2

* chore: typecheck
2026-02-06 19:50:11 +00:00
Niilo Liesivesi 3cb37b976d docs: fix a grammatical error in license description (#1408) 2025-12-26 03:36:12 +00:00
Pinapelz f07a5ee42a update docs for a whole bunch of games (#1405)
* fix: typo in  judgement header docs autogen script

* docs: bms add ST12 stslDan

* docs: bms 14k add guage history difficulties, fix typo

* docs: chuni seperate note and clear lamp, add graphs, add missing game ver

* docs: maimaidx add missing vers, add inGameId as valid import method

* docs: wacca add missing vers, add inGameId as valid import method

* docs: add missing fields for ONGEKI implementation

* docs: ddr remove percent metric, add missing fields

* docs: popn, iidx, gitadora add missing versions

* docs: pms add missing guage histories

* docs: sdvx add ULT difficulty

* docs: add wacca and maimaidx as having inGameID support on batch-manual page
2025-12-20 19:54:47 +00:00
zkldi 3f524af1ed feat: rename back to zkldi 2025-11-15 12:16:00 +00:00
John Pork 5df0f43400 lr2hook: add fast-slow support (#1367)
* build(client): add 'lintfix' target matching the server

* docs(lr2hook): suggest lr2_chainload instead of BokutachiLauncher.exe

BokutachiLauncher.exe is no longer a part of BokutachiHook.

* refactor(server/lr2hook): G-ATTACK, P-ATTACK and HAZARD are not HARD

* feat(server/lr2hook): parse extendedJudgements

* feat(server/lr2hook): use fast-slow and early/late judgements

* test(server/lr2hook): make clear that in this test notesPlayed != notesTotal

* feat(server/lr2hook): calculate BP by hand when exiting chart early

* feat(server/lr2hook): parse rseed

* feat(server/lr2hook): parse extendedHpGraphs

* feat(server/lr2hook): parse unixTimestamp

* feat(server/lr2hook): use unixTimestamp as score play time

Especially useful as BokutachiHook now retries sending scores after some
time on connections errors.

* feat(common/bms+server/lr2hook+docs): add gaugeHistory{Easy,Groove,Hard}

Could also save graphs for unimplemented gauges, not done here as I
don't know if they are ever going to be implemented while they take some
decent space.

* feat(client/bms): support several gauges

Ugly IIFE inside IIFE is work-around for eslint bug `Expected a 'break'
statement before 'case'`.
2025-10-06 21:52:28 +01:00
nairobi 65b10686a8 docs: update game list and controller rules (#1345)
* docs: update game list and controller rules

* docs: streamline 'keyboard is not allowed'
2025-08-07 14:14:01 +01:00
nairobiandzk 0a0fc57134 feat: O.N.G.E.K.I. Re:Fresh rating algorithm (#1263)
* feat: Re:Fresh support, rebased for the 6th time

* fix: migration

* fix: seeds

* fix: add tests and make them work

* fix: misc corrections

* rebased

* chore: bump rg-stats

* maybe a better migration

* attempt manual lint

* fix: star formatters

* fix: re-add name overrides

* rename them again, more consistently

* revert rbreak

* finish renaming

* i may be stupid

* refresh insights

* insight fixes

* fix: re-add platinum graphs

* delete score._id

* fix: server test

* fix: tiebreaks

* fix: what

* fix: don't kill p-score if migration is reapplied

I wonder why this could be needed

* fix: maybe notify about any errors

* docs: redefine starRating

* docs: typo

* fix(client): shrink graphs when necessary

* fix(client): use compact starfield in the insight

* feat(client): separate column for hits

* fix(client): add vertical-align

* fix: validate p-score properly

* fix: recolor AB+ to blue, actually

* fix(client): insight readability improvements

* feat(client): nicer insight lamps

* feat(client): OngekiScoreRatingCell

* fix(client): use OngekiScoreRatingCell in insight

---------

Co-authored-by: zk <ktchidev@gmail.com>
2025-07-06 19:24:30 +01:00
auxbh 3be081abcf Fix mkdocs nav, update DDR parser and add DDR import guide (#1307)
* docs: fix pages that weren't in the navigation bar

* seeds: update DDR parsing scripts to use arguments

* docs: fix minor mistake

* docs: add all supported DDR versions

* docs: add DDR musicdb import guide
2025-06-18 20:18:08 +01:00
nairobi 35517a9b2a feat(client): add name overrides for rating algorithms (#1264)
* feat(client): rating alg name override

* Added a nameOverride field to RatingAlgorithmConfig
* Added FormatGPTXRatingName
* Renamed maiDX `Rate` to `Rating`
* Renamed Ongeki `Rating` to `Classic Rating`

* fix: there's more

* fix: this doesn't need to be in common

* chore: revert this

* docs: document the new rating description
2025-04-03 16:22:44 +01:00
Katie 3fa1a22714 docs: Fix a lot of random typos and formatting issues (#1245)
This is far from perfect (or everything), but in theory provides a better experience.
2025-02-24 21:06:35 +00:00
Victor Yuandzk 2111782bf0 New match type: ddrSongHash (#1213)
* New match type: `ddrSongHash`

* style: sort `MatchTypesWithDifficulty`

* make `ddrSongHash` a song property instead of a chart property

* docs: add descriptions for match type `ddrSongHash`

* add `ddrSongHash` field to all applicable songs

* fix: enforce ddrSongHash is only used on DDR

---------

Co-authored-by: zk <zkldi.dev@gmail.com>
2024-12-18 12:54:20 +00:00
nairobi dc158343d6 docs: document #1154 (songTitle+artist matching) (#1218) 2024-12-11 14:26:38 +00:00
zk 593adb2717 feat: Dev Container (#1149)
* temporary dvctr

* start of work

* fix: timeouts in windows

* fish?

* feat: better, working stuff

* refactor: rename database-seeds to seeds/

* better

* fdsaf

* feat: don't let our container get owned by root

* fix: better user handling

* feat: falling asleep at my desk i yield to you what i have done

* feat: autoadminify

* docs: denote trickshot

* feat: open in browser on launch

* better seeds workings...

* fix: dont kill shell

* docs: mention dev/debs

* fix: whoops

* fix: make seeds load within the century

* feat: rest of the containerisation

* feat: new alias

* style: fix linter errors

* fix: bad call

* fix: better justfile
2024-08-17 15:01:40 +01:00
Gyoo 4254e29917 DDR Implementation (#1132)
* feat: DDR Implementation

* style: lint fixes

* chore: update rg-stats

* feat: ddr konaste songs and charts update
2024-08-09 19:08:49 +01:00
zkldi e1f8ebac78 docs: better rules 2024-08-04 10:05:17 +01:00
zkldi 315b83ee51 docs: rename zk to something more memorable 2024-07-14 19:55:41 +01:00
blobdashandzkldi 7b6f4b50ab [popn] Add Unilab seeds (2023-09-05) & mdb-to-mxb script (#1108)
* Add Unilab seeds (2023-09-05)

* Add mdb to mxb rerunner & fix old scripts

* Add missing comma to make the linter happy

* fix: typo

* i have no reason to believe this code is broken

* feat: get rid of some old crap

---------

Co-authored-by: zkldi <20380519+zkldi@users.noreply.github.com>
2024-06-11 12:50:57 +01:00
zkldi b25819c77e feat: autogen docs *c (#1078) 2024-05-15 09:36:03 +01:00
zkldi b42a6b38ef docs: various improvements 2024-05-14 14:48:00 +01:00
nairobi 188457257d chore,fix: upgrade ongeki seeds (#1070)
* chore,fix: upgrade ongeki seeds

The dataset is up to date up until March 27th, 2024.
A single chart is missing:
https://wikiwiki.jp/gameongeki/怒槌~光吉猛修一部謎~

Added maxPlatScore and inGameID.
Added alt (romaji) song titles.
Removed the wikiwiki scraper because it's no longer relevant.
Restored the score column that relied on maxPlatScore.
Fixed the client crashing when you click Lamps Only in a geki session.
Removed Act 2.

* fix: missing fields in the test chart

* chore: get rid of isUnranked

* fix: clarify the track ID range
2024-05-13 15:33:32 +01:00
zkldi 5720bf00c1 feat: easy setup scripts 2024-05-11 19:50:13 +01:00
zkldi 5128581016 feat: get rid of isHot and isLatest in code (#1066)
* feat: get rid of isHot and isLatest in code

* feat: remove hot/latest from seeds

* feat: migrate away from them too

* fix: 21

* fix: again

* fix: again

* fix: again
2024-05-10 12:52:59 +01:00
nairobiandzkldi 4a80b1f516 feat: Ongeki support (#1013)
* feat: initial ongeki support

* feat: initial ongeki seeds

* chore: link to a basic score exporter

* fix: unhardcode the colSpan of score dropdowns

Fixes ongeki and doesn't break chunithm

* fix: make bellCount optional to match judgements and damage

* docs: add a page for Ongeki

* feat: ongeki seeder

* feat: implement isHot

Also restore Arcaea to test.conf.json5 (it was a mistake)

* fix: add isHot to the seeder

* fix: proper handling of re:masters

Also change non-full-bell from an empty string to "NONE", for clarity

* docs: document the re:master fix

* feat: update rg-stats to 0.5.5

enables ongeki calcs

* chore: lockfile

* fix: get rid of scales as they're unused

* fix: update name->NAME

* minrelevantvalue should be one of the values?

* fix: add property that must be there?

* fix: jesus christ the tests are loud

* better docs on mrv

* fix: remove platdelta, make platscore optional

* fix: grade B tests oh my god

* fix: rating check

* fix: pb merge check

* fix: pb merge check #2

* fix: use nowrap in all lamp cells

* fix: tidy up platcell

* fix: all of these MUST be part of scoreID

* fix: remove unused code

* feat: remove note counts & isHot

* chore: bump rg-stats

---------

Co-authored-by: zkldi <20380519+zkldi@users.noreply.github.com>
2024-05-08 18:00:46 +01:00