Commit Graph

6387 Commits

Author SHA1 Message Date
Kalle
84f4757409 Fix SP team in match timeline not rounded
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
2026-05-05 07:16:09 +03:00
Kalle
8784046935 Deflake E2E test 2026-05-05 07:08:08 +03:00
Kalle
93dfb53394 Fix tournament reg page check-in info not respecting user date format preference 2026-05-04 18:47:28 +03:00
Kalle
2b5b1b1948
New match page (#3032)
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
2026-05-04 18:15:10 +03:00
dependabot[bot]
8b78522b74
build(deps): bump the minor-and-patch group with 9 updates (#3035)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-04 17:29:19 +03:00
Kalle
b5f8b3667d Fix /suspended 500 when banned user row was deleted via migrate
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
2026-05-03 14:47:20 +03:00
Kalle
767ca4d7ab Fix build delete action 500 error if build does not exist 2026-05-03 14:34:03 +03:00
Kalle
92c62746be Show year on the tournament register page if not current year 2026-05-03 14:27:50 +03:00
Kalle
76716bf464 Add missing order by to TournamentMatchRepository.findByTournamentTeamId
Needed so we have the logical order on
the team page.
2026-05-03 13:13:31 +03:00
Kalle
1bf9802be8 Fix tournament team page meta tags not set 2026-05-03 11:55:10 +03:00
Kalle
c37b52dfb2 Fix new art form double-upload and premature submit
The file <input> had name="img", so new FormData(form) already included
the original uncompressed file under "img". handleSubmit then appended
the compressed version with the same key, and FormData.append doesn't
overwrite — every save uploaded two files to S3 (the second clobbering
the first under the same generated filename).

The submit button also only checked the full-size img state, not
smallImg. Both Compressor instances run in parallel, so Save could fire
before the thumbnail finished compressing — saving art with no
thumbnail, and (under slow MinIO on CI) making the e2e test flaky as
two serial S3 uploads pushed past the 5s toHaveURL timeout.
2026-05-03 11:15:44 +03:00
dependabot[bot]
0d473379da
build(deps): bump i18next from 25.10.10 to 26.0.7 (#3029)
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>
2026-05-02 16:36:55 +03:00
dependabot[bot]
ca36b7730d
build(deps): bump react-i18next from 16.6.6 to 17.0.0 (#3030)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-02 15:56:08 +03:00
honk-s
b18a2b062e
badge: add badge for Cats Have 9 Lives (#3031) 2026-05-02 15:55:49 +03:00
dependabot[bot]
4cb42e4cde
build(deps): bump the minor-and-patch group with 3 updates (#3028)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-02 15:55:35 +03:00
Name
59d70a71e9
badge: add badge for Solo Squid Showdown: Golden Edition (#3027) 2026-05-02 14:28:06 +03:00
Kalle
3f3c084910 Migrate addInitialSkill to Kysely 2026-05-02 14:24:21 +03:00
Kalle
8563a4956a Deprecate tournament team page DB call in favor of derived data 2026-05-02 14:06:45 +03:00
Kalle
1823c9881c Fix flaky SendouQ full group tier sort test 2026-05-02 13:53:18 +03:00
Kalle
80611ec4dc Add ITZ 50 badge 2026-05-02 13:47:36 +03:00
Kalle
23bfa19403 Allow TO to remove groups from LFG before registration ends
Closes #2948
2026-05-02 13:36:15 +03:00
Kalle
05aea47d32 Fix streamer not deduped when in tournament
Closes #3010
2026-05-02 13:18:02 +03:00
Kalle
10f3af3785 Fix user results page styling on mobile
Closes #3026
2026-05-02 12:47:27 +03:00
Kalle
bf0277479d User seasons page tournament result card style tweaks
Closes #3025
2026-05-02 12:41:48 +03:00
Kalle
0f2b03be3a Fix Swedish AM/PM markers leaking into time when YMD date format set 2026-05-02 12:29:28 +03:00
Kalle
d91d0568e1 Swap user page Date/Tournament column locations 2026-05-02 11:41:46 +03:00
Kalle
747a63edbc Show current route's chat in room list even when expired
Non-participants (e.g. tournament organizers) viewing a tournament
match chat could see the chat auto-open correctly, but clicking the
back arrow to the room list left the chat invisible — the only way
back was to leave the route and return.

The match chat appears in chatContext.rooms via the SUBSCRIBE
response, which (unlike the initial-payload path that participants
go through) does not check room expiry on the skalop side. So an
organizer viewing an old match ends up with an expired room in
their rooms list. ChatView already handles this gracefully with a
read-only banner, but RoomList was filtering on
expiresAt > Date.now() and dropping it.

Cleanup in useChatRouteSync removes the room from chatContext.rooms
on navigation, so exempting the current route's chatCode from the
expiry filter only affects the page that subscribed to it.
2026-05-02 11:36:56 +03:00
Kalle
5131fb7673 Fix widget edit crash when saving zero widgets
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
upsertWidgets ran an unconditional insertInto("UserWidget").values([])
when the submitted widgets array was empty. Kysely emits
`insert into "UserWidget" () values ()` for an empty values array,
which SQLite rejects with `near ")": syntax error`, rolling back the
preceding delete in the same transaction. Saving an empty widget list
was therefore impossible. Skip the insert when the array is empty.
2026-05-01 17:32:55 +03:00
Kalle
b011cd0940 Catch SendouQError in remaining sendouq actions
The /q (front page), /q/preparing, and /q/match/:id action handlers
were not wrapping their switch in try/catch the way /q/looking does.
When SQGroupRepository.createGroup, addMember, or createGroupFromPrevious
tripped the integrity check (member already in another non-INACTIVE
group, group too large, etc.) the SendouQError bubbled up unhandled
and React Router responded with 500 instead of letting the loaders
re-run with fresh state.

These errors are expected race conditions, e.g. a double-submit
where the second JOIN_QUEUE arrives after the first already created
the group. Returning null lets the client see the actual current
state instead of an error page, matching the behavior already in
q.looking.server.ts.
2026-05-01 17:15:38 +03:00
Kalle
b261600f0e Fix object damage calculator crash on invalid SPECIAL weapon ID
The SPECIAL branch of validatedAnyWeaponFromSearchParams only checked
nonDamagingSpecialWeaponIds membership, not whether the parsed id was
actually a valid SpecialWeaponId. A malformed URL like
?weapon=SPECIAL_9ap=0... made Number() return NaN, which fell through
to exampleMainWeaponIdWithSpecialWeaponId and hit assertUnreachable.
2026-05-01 16:04:35 +03:00
Kalle
8a773650fd Don't allow too old tournaments to contribute to already closed seasonal rankings 2026-05-01 15:51:40 +03:00
Kalle
609bb2de7a Count league divisions for the current season, not when it was started 2026-05-01 15:36:32 +03:00
Kalle
2d3bff6437 Fix tournament page crash on page load + add backend check against it
Error: Invariant failed: Empty placements not supported
I don't think it's possible for this to happen normally
but this fix provides more defense just in case
2026-05-01 15:30:01 +03:00
Kalle
b2de42b081 Fix builds page crash on lower case filters 2026-05-01 14:47:59 +03:00
dependabot[bot]
7d60fcc4d1
build(deps): bump the minor-and-patch group across 1 directory with 15 updates (#3022)
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-01 10:12:24 +03:00
Kalle
539da816bf
Make date time format apply everywhere (#3023) 2026-05-01 10:11:29 +03:00
Kalle
bfef81682e Filter out match-less sets in team set history
Some checks failed
E2E Tests / e2e (push) Has been cancelled
Tests and checks on push / run-checks-and-tests (push) Has been cancelled
Updates translation progress / update-translation-progress-issue (push) Has been cancelled
Regression introduced in b26f4ab2 (Migrate setHistoryByTeamId to
Kysely): the old raw SQL inner-joined through
TournamentMatchGameResultParticipant, which implicitly dropped
completed matches that had no game results (forfeits/walkovers).
The Kysely version fetches players via a jsonArrayFrom subquery,
so those matches leaked through and rendered as 0-0 on the team
page.
2026-04-28 21:20:56 +03:00
Kalle
a1491a189e Always use year: numeric if YMD date format preference 2026-04-28 21:15:03 +03:00
Kalle
06c2f637a3 Add "Date format" preference
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
2026-04-27 18:58:27 +03:00
Kalle
ec981d586e Fix team having many tournament level check-ins
Concrete bug it caused: wrong team count for tournament card on the front page
2026-04-27 18:05:49 +03:00
Kalle
1ef646a5c1 Add pagination to vods 2026-04-27 17:31:41 +03:00
Kalle
2e8ff8d034 Fix Global Search flashing "No results" when it's searching 2026-04-27 08:52:16 +03:00
Kalle
b26f4ab254 Migrate setHistoryByTeamId to Kysely 2026-04-27 08:43:30 +03:00
Kalle
53d7ca3813 Fix tag text color in light mode 2026-04-27 07:37:29 +03:00
Kalle
d91b8444b6 Clean up obsolete mode tags 2026-04-27 07:28:00 +03:00
Kalle
49e35fd4c2 Fix A/B round robin only tournament placements on front page
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
Closes #3009
2026-04-26 20:01:58 +03:00
Kalle
a8a42797e5 Exclude scripts from main typecheck
The dicts might or might not exist. The new command can be ran
when the dicts do exist.
2026-04-26 17:53:13 +03:00
Kalle
e1b9be7feb Update biome 2026-04-26 17:40:10 +03:00
Cafy
ea4ca19b0f
badge: add badge for Wings Up! (#3014) 2026-04-26 17:37:32 +03:00
BrushMommy
8580c82a4a
badge: add badge for Wellstring Propoganda: Top Cut (#3008) 2026-04-26 17:36:36 +03:00