* 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'`.
Fixes elements with same index in the page staying open when listing
pages.
1) Open https://boku.tachi.ac/utils/imports
2) Expand first score
3) List to the second page
4) Observe first score of the page being open
* sdvx: add ac MAXXIVE CLEAR lamp
* seperate USC lamps from SDVX for tests
* Add maxxive in converter for api-cg/sdvx
* feat: add migration
* fix: pre-empt service support
* lint(fix)
* fix: my typescript tooling stopped working
* fix: test
---------
Co-authored-by: blobdash <fruityenloops@gmail.com>
Co-authored-by: zkldi <20380519+zkldi@users.noreply.github.com>
* feat(maimaidx): graphs
* fix: use 4dp for percent graph
* fix: use simple boolean check for duration
song duration is either a number or not defined, based on the schema.
we also don't really want to make a graph if the song has 0 duration, that's nonsensical
* add durations for omnimix songs
* [chunithm] split lamp into combo lamp and clear lamp
* ignore nonsense lint
* fix myt converter tests
* fix chunitachi batch manual
* mfw edited wrong file
* fix(migration): only migrate lamp-related showcases
* remove chart lamp showcases
* remove unused imports
* fix: limit re-pb to chunithm scores, migrate chart lamp showcases to comboLamp
* fix migration of comboLamp progress
* fix: updateMany with multi: true
* fix: when updating references, ensure only known IDs are in
* fix(client): make red stand out more
* fix(client): lamp sorting
* feat(server): validate clear and combo lamps based on judgements
* fix(server): validate combo lamps based on score boundary
* fix: reword validation errors to stay consistent
* fix: correct explanation
* fix: how was I this stupid?
* fix: update blacklisted scores too
* fix: bulk write all the updates
* fix: bulkWrite harder
* fix: i probably need sleep
* all of game-settings to bulkWrite
* fix folder lamp goal nonsense
* maybe fix colors
* fix: name PB merges
* chore: properly test PB merge
* mfw reversed
* fix(SessionRaiseBreakdown): lamp name
* rename to noteLamp
* why is eslint even complaining here?
* rename the enums
* fix tests
* tweak colors of lamps
* feat: chunithm score graph
* feat: add life
* feat: add song duration data for all songs
* fix: make chunithm graphs non-nullable
* fix: test data
* fix: potrząsanie kanalizacją
* fix: misleading old function name
* fix: make duration optional for chunithm
* fix: add the missing duration
* [maimai DX] PRiSM final
* add Supersonic Generation
This is a PRiSM PLUS song in Japanese region, but a PRiSM song in International.
As a way to compromise, the display version is PRiSM PLUS, but it also shows up in
the PRiSM folder. This should be removed when PRiSM PLUS hits Tachi for real.
* add PRiSM Omnimix
* disable BUDDiES PLUS tables
* add PRiSM Omnimix to versions in config
* pick correct default table
* fix test data
* fix mock db
* add search terms for recently added songs
* fix(seeds/chunithm): make displayVersion actually display friendly
* fix(seeds/chunithm): correct displayVersion for some songs
These songs were released in LUMINOUS PLUS International, but VERSE in the Japan
region. Since we primarily track Japanese data (levels, etc.) it's probably better
that the display version also lines up.
* fix: correct song metadata
* fix: prefix later versions with CHUNITHM
* feat: switch chunithm song info over to iidx layout
* fix: prefix versions with CHUNITHM
* feat(score-import): Initial support for jubeat imports from CG
* feat(client): enable jubeat imports from cg through dashboard
* feat(api-cg/jb): further implementation of jubeat import from cg
* feat(api-cg/jb): create test
* fix(api-cg/jb): test on testingdb only has one chart
* refactor(api-cg/jb): cleanup converter
* fix(api-cg/jb): fix test mkOutput usage
* fix(api-cg/jb): validation of the int to enum conversion from cg
* feat(client): frontent jubeat import routes for cg
* feat(bot): add jubeat cg import command
* 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
* feat: implement graphs
* fix: remove a dbg field
* fix: implicit anys
I don't know why it doesn't complain about other files.
I don't know why the server check failed. Works on my machine.
* fix(client): use the rating formatter specified in tachi-common for history graph
* adjust margins so the rating numbers fit
* museca: drop decimal places from profile rating
* adjust margins again to accommodate for wacca/jubeat/gitadora
* chore: lint
* feat: support exScore, fast, slow, maxCombo as optional metrics for DDR
* chore: lint-fix in common
* fix: remove exScore from calculated metrics for DDR
* fix: use clearer logic for number|null
---------
Co-authored-by: zkldi <20380519+zkldi@users.noreply.github.com>
* disable query instead of throwing an error
* stop header from fetching user stats when no user
* unify user profiles components
for logged in users viewing their own profiles, it now simply reads the UGS in context
for viewing other users' games, it now uses react query instead of making a fetch every time the component is created
* fix rivals button being shown to logged out users
* 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