* feat: canonical level folders for ongeki
* add levelNums and level history table
* less insane field name
* rating history -> level history
* seeds script nonsense
* chunithm
* remove 14+ and up from the plost table
* um
* fucking lowirommmmmmmmmmmmmmm
* I gently open the repo
* eagles can fly, people can try, but that's about it
* I still hate you
* potential merger test
* remove raw b50
* touchup
* less insane handling of lamps
* add sacrosanct
* 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
* 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
* 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
* 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
* [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
* 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'`.
* 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
* 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
* 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>
* 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
* 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>