Daniel Schädler
995a2cc250
feat(accounts): add player team profiles
...
Teams can link to player accounts by email while keeping profile tournament data public unless viewed by the account owner.
2026-05-04 14:52:59 +02:00
Daniel Schädler
54975d969b
Merge remote-tracking branch 'origin/master' into codex/tur-30-transaction-log
2026-04-30 14:07:12 +02:00
Daniel Schädler
21e1463b64
feat: add tournament transaction log
2026-04-30 10:04:56 +02:00
Daniel Schädler
2b63e61475
fix(sync): protect follower sync tokens
...
Store read-only receiver tokens as keyed digests and expose only sync_auth_configured in owner responses. Keep leader push tokens write-only in API responses because outbound sync still needs to send them.
Refs TUR-84
2026-04-30 09:32:37 +02:00
Daniel Schädler
90e71a068c
Merge master and fix e2e service env
2026-04-28 22:58:09 +02:00
Daniel Schädler
fe0f3c868e
TUR-130 update dependencies and ruby
2026-04-28 13:55:47 +02:00
Daniel Schädler
3008b9fd50
TUR-137 add timer reasons
2026-04-28 12:28:01 +02:00
Daniel Schädler
68b72cc01a
test: update beamer e2e contract
2026-04-26 23:45:35 +02:00
Daniel Schädler
acdef9f5b4
feat(beamers): replace asset URLs with config
...
Add beamer config JSON, drop obsolete asset URL fields, and narrow display_state to the new beamer API states. Migration maps legacy display states to supported values and initializes config to {}.
2026-04-26 16:13:12 +02:00
Daniel Schädler
e9ef73c230
refactor: rename timer db column
2026-04-24 11:39:26 +02:00
Daniel Schädler
b0bbbb8ce5
Merge branch 'master' into 'codex/tur-55-tur-56-timer-websocket'
...
# Conflicts:
# e2e/lib/action_cable_client.rb
# tasks.py
2026-04-23 21:57:14 +00:00
Daniel Schädler
afff813994
feat: add timer modes and websocket updates
2026-04-23 23:29:03 +02:00
Daniel Schädler
b40e64cde8
feat: add manual team action list creation
2026-04-23 22:47:51 +02:00
Daniel Schädler
7151976d26
feat: add backend beamer live updates
2026-04-23 14:35:16 +02:00
Daniel Schädler
e41ef870f9
Merge branch 'codex/TUR-80-team-action-lists' into 'master'
...
TUR-80 playoff token collection tracking
Closes TUR-80
See merge request turniere/turniere-backend!49
2026-04-23 11:46:41 +00:00
Daniel Schädler
883638f4fd
feat: add websocket team action updates
2026-04-23 10:19:47 +02:00
Daniel Schädler
ad96668a04
Merge branch 'TUR-52-backend-match-swap' into 'master'
...
TUR-52 backend match swap endpoint
Closes TUR-52
See merge request turniere/turniere-backend!48
2026-04-22 15:10:45 +00:00
Daniel Schädler
7d65e4df82
feat: track team action list completion
2026-04-22 16:51:17 +02:00
Daniel Schädler
f3ef3f4373
refactor: simplify playoff loser lookup
2026-04-22 16:15:25 +02:00
Daniel Schädler
99538a3343
Add backend group match swap endpoint
2026-04-22 15:48:06 +02:00
Daniel Schädler
57aecd7cc5
feat: add third place playoff match
2026-04-22 15:46:48 +02:00
Daniel Schädler
8789c2cb2e
Merge origin/master into follower sync
2026-04-16 15:54:32 +02:00
Daniel Schädler
761bb8daea
Simplify default beamer handling
2026-04-16 13:02:40 +02:00
Tobias Huber
2ceba1dfcf
Merge branch 'master' into TUR-32_backend-beamer
2026-04-16 08:11:02 +02:00
Daniel Schädler
07b7a78bd5
Merge origin/master into follower sync
2026-04-15 16:43:38 +02:00
Daniel Schädler
ce7b5c5ac7
Fix match points specs
2026-04-15 11:22:55 +02:00
Daniel Schädler
2d273f067c
Optimize tournament render hot path
2026-04-15 09:36:56 +02:00
Daniel Schädler
0ba86c84f0
Clear follower token on takeover
2026-04-14 18:29:30 +02:00
Daniel Schädler
bbb1ad97ef
Make follower sync asynchronous
2026-04-13 20:54:28 +02:00
Daniel Schädler
133ebae847
Add read-only tournament follower sync
2026-04-13 20:32:34 +02:00
Tobias Huber
85fce7faac
add backend beamer
2026-04-13 20:01:48 +02:00
Daniel Schädler
4713a020fa
Implement TUR-58 group stage decider matches
2026-04-12 19:13:52 +02:00
Daniel Schädler
eedafe1276
Add ranking decision metadata for group scores
2026-04-12 17:47:28 +02:00
Daniel Schädler
7cef4a9b5e
Fix group score direct comparison tiebreak
2026-04-12 17:03:33 +02:00
Daniel Schädler
79bafec693
Add advancing teams into tournaments show endpoint
2025-03-09 21:05:41 +01:00
Daniel Schädler
5d857c5d82
Remove position from comparison
2024-04-07 21:40:59 +02:00
Daniel Schädler
4a8cb71fc4
Add and calculate position to sort group_scores by
2024-04-07 21:17:45 +02:00
Daniel Schädler
1084d836c1
Implement sorting correctly with <=> operator
2024-04-07 18:07:55 +02:00
Daniel Schädler
c3af6f9232
Rubocop -A
2021-08-15 14:31:50 +02:00
Daniel Schädler
33ccab8988
Return all matches also from groups
2019-10-26 00:32:14 +02:00
Daniel Schädler
77c76b7a31
Add matches method to tournament
...
The method collects all matches from all stages
2019-10-25 23:47:38 +02:00
Daniel Schädler
4e72d015ff
Implement method to check if stage is over
2019-06-18 19:22:05 +02:00
Daniel Schädler
c5780c2da3
Implement function to calculate the difference in points
2019-06-18 19:22:05 +02:00
Thor77
6640be1e9a
Add devise confirmable to user model
2019-06-18 12:27:00 +02:00
Daniel Schädler
98319e9625
Assign :intermediate_stage to first stage if single_team matches present
2019-06-17 15:02:30 +02:00
Daniel Schädler
36db03293e
Return a "winner" for :single_team matches
2019-06-17 15:02:30 +02:00
Thor77
f3431e8442
Add bet model
...
* has_many relations in all belonging models
* specs for relations in existing models
* association specs for bet model
2019-06-17 13:48:49 +02:00
Daniel Schädler
2e336262aa
Add state to stage
...
This state is required to stop the group stage and trigger playoff
generation, it is (for now) irrelevant for anything other than that.
2019-06-13 13:21:24 +02:00
Daniel Schädler
4d5d7bc812
Only allow positive powers of two for playoff_teams_amount
2019-06-13 13:21:24 +02:00
Daniel Schädler
564cec2820
Add method to check if match_score is part of a group match
2019-06-05 09:49:21 +02:00