100 Commits
Author SHA1 Message Date
leanderandClaude Opus 5.5 fa68481ef3 ci: publish a container image to ghcr.io on each release
Builds the image and pushes it to ghcr.io/uio-gaming/name-100-uio-gamers, tagged with the release version and latest. It runs as a job in the release-please workflow, because releases created with GITHUB_TOKEN don't trigger other workflows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 00:18:29 +01:00
leanderandClaude Opus 5.5 13f368c2d0 ci: deploy through the restricted uiogaming-deploy script
The old workflow ran docker compose in the repo folder, which failed because the containers belong to the server's top-level compose project. The deploy key can now only run /usr/local/bin/uiogaming-deploy (see UiO-Gaming/drift), so the workflow just passes the service name. Also adds manual runs and prevents overlapping deploys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:47:56 +01:00
leanderandClaude Opus 5.5 1b07dcba30 ci: add release-please for automated releases
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 00:03:41 +01:00
leander 6912d163f3 change default port
avoid having to make this manual change in the production environment
2026-11-01 22:12:53 +01:00
leanderandClaude Opus 5.5 2ede171914 Declare Discord as the OAuth issuer so login works with the new iss callback parameter
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 02:04:59 +01:00
leanderandClaude Opus 5.5 0df601c5da Document setup, environment variables and deployment in the README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:44:23 +01:00
leanderandClaude Opus 5.5 3838bcbdc8 Avoid downtime during deploys by not stopping the container before building
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:44:22 +01:00
leanderandClaude Opus 5.5 15e7ed9bae Use stable keys for the guesses list
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:44:21 +01:00
leanderandClaude Opus 5.5 56d86d9ed2 Keep the html lang attribute in sync with the selected language
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:44:20 +01:00
leanderandClaude Opus 5.5 b27be83297 Use an accessible dialog for the How to Play popup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:44:20 +01:00
leanderandClaude Opus 5.5 6f7a5a38eb Fix the page layout grid template for Tailwind v4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:44:08 +01:00
leanderandClaude Opus 5.5 7be5762297 Only offer goals that are reachable with the current number of paying members
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:44:07 +01:00
leanderandClaude Opus 5.5 c6c22f9268 Show a message with the final time when the goal is reached
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:43:56 +01:00
leanderandClaude Opus 5.5 16de8afe42 Compute the timer from the start time so it stays accurate in background tabs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:43:43 +01:00
leanderandClaude Opus 5.5 0b206c3edb Ignore guess responses that arrive after a restart
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:43:31 +01:00
leanderandClaude Opus 5.5 148449bcae Show an error when a guess fails and keep the input for retrying
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:43:18 +01:00
leanderandClaude Opus 5.5 bcb8259489 Remove unsupported url option from the auth config
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:42:44 +01:00
leanderandClaude Opus 5.5 eece956c16 Use the correct default avatar for users without a discriminator
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:42:41 +01:00
leanderandClaude Opus 5.5 d7e9669382 Only request the identify scope from Discord
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:42:39 +01:00
leanderandClaude Opus 5.5 ecfa50799e Re-verify the paying member role every hour during a session
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:42:26 +01:00
leanderandClaude Opus 5.5 925d1a4593 Validate the guess request body
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:42:13 +01:00
leanderandClaude Opus 5.5 e09b2f981f Return an error instead of a wrong guess when the member lookup fails
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:42:05 +01:00
leanderandClaude Opus 5.5 6a3487e6da Share member list refreshes, fall back to stale cache and retry on Discord rate limits
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:41:54 +01:00
leanderandClaude Opus 5.5 7c37c4d6d5 Move member lookup to lib and remove duplicated types
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:41:38 +01:00
leanderandClaude Opus 5.5 43d1091ab2 Exclude .env files from the Docker build context
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:41:26 +01:00
leander 668a1ffd15 run linter 2026-10-31 01:31:20 +01:00
leander e4d10f06a5 upgrade all deps to their latest versions 2026-10-31 01:24:30 +01:00
leander dd5f3c7d06 upgrade docker image from node 20 to 26 2026-10-30 22:56:59 +01:00
leander e27ae55ac0 run npm audit fix 2026-10-30 22:56:35 +01:00
leander cfd6ebc6fb fix docker not building 2026-08-29 17:17:25 +02:00
leander de81e6be22 fix vulns 2026-08-29 17:10:05 +02:00
leander 4e044fde50 fix vulns 2026-03-23 15:18:04 +01:00
leander e7b41ca8e5 LET ME ENJOY MY VACATION IN PEACE STUPID FUCKING FRAMEWORK 2025-12-13 03:36:24 +01:00
leander 80d81eaf6f bump additional deps 2025-12-09 13:08:31 +01:00
leander 689b82a6d9 everyday I wake up to a new js-something vuln and I'm sick and tired of it
let me vacation in peacegit add .git add .
2025-12-09 13:07:13 +01:00
leander 5218df3ba0 add codeowners file 2025-07-10 15:31:42 +02:00
leander 0db02de98b add deply action 2025-07-10 15:20:47 +02:00
leander 86a6da3dbb change readme title 2025-06-22 13:30:22 +02:00
leander 6840c6340a add guess goal selector 2025-06-22 13:30:03 +02:00
leander d096be3357 fix duplicate displayname/nickname matching issue
the matching logic now handles cases where there are multiple people with the same nickname or global name
2025-06-22 13:10:43 +02:00
leander 7715db4029 add nextauth_url env var
make sure the oauth callback knows where to go
2025-06-22 02:49:10 +02:00
leander 277ecbd99a include env vars from .env when using docker compose 2025-06-22 02:42:00 +02:00
leander 9a09c40f22 automatically refocus text input field after submission 2025-06-22 02:40:03 +02:00
leander 7764d98f14 move auth handler and fix type issues 2025-06-22 02:37:21 +02:00
leander aa76b21282 fix translation typos and rephrase translations 2025-06-22 02:29:39 +02:00
leander 4322d0daf9 add button fade in animations on hover 2025-06-22 02:25:54 +02:00
leander b277745531 add discord member match data provider 2025-06-22 02:22:54 +02:00
leander 1def9d7cd5 add support for translated match descriptions 2025-06-22 02:20:27 +02:00
leander 5d90633688 rewrite readme for UiO Gaming fork 2025-06-22 02:09:45 +02:00
leander 86b4a8ab35 show loading state on guess submission 2025-06-22 02:09:23 +02:00
leander 6a26627f5c change source code link 2025-06-22 01:37:15 +02:00
leander 964894d574 require specified role to use website 2025-06-22 01:18:34 +02:00
leander b4cc07df28 change button color on hover 2025-06-22 00:49:35 +02:00
leander 259484195f use cursor-pointer on button hover 2025-06-22 00:46:54 +02:00
leander 290b359c4f feat: add discord login support 2025-06-22 00:42:25 +02:00
leander 5570fc8eb0 increase top margin for header
avoid collisions
2025-06-22 00:36:15 +02:00
leander 0e9e3992b9 save set language 2025-06-22 00:32:10 +02:00
leander 8e92e2850f adapt translations for uio gaming version 2025-06-21 21:20:57 +02:00
leander b54995d1af change color scheme to uio gaming's design spec 2025-06-21 21:17:37 +02:00
leander 285d2a9f23 change default limit to 100 - part 2 2025-06-20 23:53:30 +02:00
leander b5c0470fc0 change default limit to 100 2025-06-20 23:52:08 +02:00
leander 9b1146c477 add support for setting a custom correct guess limit 2025-06-20 23:26:29 +02:00
leander a9f2062259 correct data source in translations 2025-06-20 23:21:06 +02:00
leander 23e2181c30 make sure public folder is included when cloned
but use the correct path this time
2025-06-20 23:16:22 +02:00
leander 2cbb28534e make sure public folder is included when cloned 2025-06-20 23:12:51 +02:00
leander 1cf392ad93 add docker support 2025-06-20 23:08:00 +02:00
leander de683972f9 run linter 2025-06-20 22:57:35 +02:00
leander 469dd70c45 define API return type 2025-06-20 22:56:21 +02:00
leander c86da26f7b remove unused variable 2025-06-20 22:55:56 +02:00
leander b32db295b6 create person fetcher
attempts to fetch a person from store norske leksikon
2025-06-20 22:51:16 +02:00
leander 09e20d9731 show input if there is match 2025-06-20 22:50:42 +02:00
leander 35c970e5f2 avoid repeated answers when match from API is the same 2025-06-20 22:50:12 +02:00
leander e5549499c8 remove bundled files 2025-06-20 03:50:53 +02:00
leander a49cec341c initial readme 2025-06-20 03:48:40 +02:00
leander 07ede40a36 avoid footer expanding height on tall devices 2025-06-20 03:43:13 +02:00
leander 48e2aa7294 initial homepage 2025-06-20 03:37:02 +02:00
leander 1cfa02083d make title accent color 2025-06-20 03:33:55 +02:00
leander abdc133c8c ensure consistent styling across themes 2025-06-20 03:30:39 +02:00
leander 9353ce95ea use new accent colors 2025-06-20 03:30:13 +02:00
leander 4d29bf60af use new bg color 2025-06-20 03:27:50 +02:00
leander 64ff8f0334 prevent link from being clickable outside of text 2025-06-20 03:27:37 +02:00
leander 9e20dcf0b7 initial stylesheet 2025-06-20 03:26:53 +02:00
leander ae520d8418 create languagemenu component 2025-06-20 02:22:05 +02:00
leander 4e73cac4f1 create timer component 2025-06-20 02:04:55 +02:00
leander 84570a2e8f create howtoplaybutton component 2025-06-20 01:56:21 +02:00
leander b803292646 create howtoplay component 2025-06-20 01:53:49 +02:00
leander 267505c40f create guessform component 2025-06-20 01:45:55 +02:00
leander 749f3a7003 fix guesseslist styling 2025-06-20 01:21:01 +02:00
leander e416e25b73 fix footer styling 2025-06-20 01:18:02 +02:00
leander 0d6a61f64d initial guesseslist component 2025-06-20 01:05:44 +02:00
leander c4d9957025 create placeholder api endpoint 2025-06-20 01:03:43 +02:00
leander c6ac8caafe introduce match type 2025-06-20 01:03:21 +02:00
leander d4011f4e90 remove trailing comma 2025-06-20 00:54:37 +02:00
leander 971533f0e8 initial translations 2025-06-20 00:52:50 +02:00
leander 91ccab84f3 create language context wrapper 2025-06-20 00:48:52 +02:00
leander bbaf026ebb create restart button 2025-06-20 00:44:37 +02:00
leander 97687fb750 set root path to app directory 2025-06-20 00:44:05 +02:00
leander 80fd9eb450 create prettier config 2025-06-20 00:42:27 +02:00
leander 018c08af20 add initial dependencies 2025-06-20 00:42:16 +02:00
leander 771bbd93b0 initial layout 2025-06-20 00:41:01 +02:00