diff --git a/bin/main/Ideen.txt b/bin/main/Ideen.txt
index 64b32e5..96bd128 100644
--- a/bin/main/Ideen.txt
+++ b/bin/main/Ideen.txt
@@ -1,13 +1,4 @@
-Umsetzung des Spiels:
-Der Lockee hat eine Stunde Zeit das Spiel zu starten, dies geschieht per Knopfdruck
-Wenn er dies nicht schafft -> bei Keyholder, benachrichtige Keyholder und lass sie/ihn entscheiden, ansonsten freeze wie bei freeze card
-Übernimm die Logik des Spiels aus dem BDSM Game.
-Falls eine Zeitstrafe eine temporäre Öffnung vor oder nach der Aufgabe benötigt, öffne das Lock für 5 Minuten. Überzogene Zeit wird addiert und am Ende des Locks gefreezed
-Selbiges gilt, falls der finisher eine temporäre Öffnung danach erfoldert
-Benötigt der Finisher eine Öffnung davor, verwende die Logik der Cum Card, und addiere diese Zeit auf die möglicherweise schon vorhandenen Freeze Zeit am Ende des Locks
-
-
wenn ich dates erfasse kann ich diese auch zu einer Verantstaltung machen,
hier kann ich die auswählen, zu denen ich "Ich bin dabei" gedrückt habe, das
diff --git a/bin/main/de/oaa/xxx/config/StringListConverter$1.class b/bin/main/de/oaa/xxx/config/StringListConverter$1.class
index 08a8f27..6ad2187 100644
Binary files a/bin/main/de/oaa/xxx/config/StringListConverter$1.class and b/bin/main/de/oaa/xxx/config/StringListConverter$1.class differ
diff --git a/bin/main/de/oaa/xxx/config/StringListConverter.class b/bin/main/de/oaa/xxx/config/StringListConverter.class
index 2ca449c..b54353e 100644
Binary files a/bin/main/de/oaa/xxx/config/StringListConverter.class and b/bin/main/de/oaa/xxx/config/StringListConverter.class differ
diff --git a/bin/main/de/oaa/xxx/dating/DatingController$VorliebeChipDto.class b/bin/main/de/oaa/xxx/dating/DatingController$VorliebeChipDto.class
index 5920573..bffbe01 100644
Binary files a/bin/main/de/oaa/xxx/dating/DatingController$VorliebeChipDto.class and b/bin/main/de/oaa/xxx/dating/DatingController$VorliebeChipDto.class differ
diff --git a/bin/main/de/oaa/xxx/dating/DatingController.class b/bin/main/de/oaa/xxx/dating/DatingController.class
index 462a8ad..fef7ed7 100644
Binary files a/bin/main/de/oaa/xxx/dating/DatingController.class and b/bin/main/de/oaa/xxx/dating/DatingController.class differ
diff --git a/bin/main/de/oaa/xxx/dating/DatingDateController$CreateDateRequest.class b/bin/main/de/oaa/xxx/dating/DatingDateController$CreateDateRequest.class
index 16d9c65..7ca89e4 100644
Binary files a/bin/main/de/oaa/xxx/dating/DatingDateController$CreateDateRequest.class and b/bin/main/de/oaa/xxx/dating/DatingDateController$CreateDateRequest.class differ
diff --git a/bin/main/de/oaa/xxx/dating/DatingDateController$DateInterestDto.class b/bin/main/de/oaa/xxx/dating/DatingDateController$DateInterestDto.class
index 9d2ead0..145de5b 100644
Binary files a/bin/main/de/oaa/xxx/dating/DatingDateController$DateInterestDto.class and b/bin/main/de/oaa/xxx/dating/DatingDateController$DateInterestDto.class differ
diff --git a/bin/main/de/oaa/xxx/dating/DatingDateController$DatesResult.class b/bin/main/de/oaa/xxx/dating/DatingDateController$DatesResult.class
index 171735c..c0534d4 100644
Binary files a/bin/main/de/oaa/xxx/dating/DatingDateController$DatesResult.class and b/bin/main/de/oaa/xxx/dating/DatingDateController$DatesResult.class differ
diff --git a/bin/main/de/oaa/xxx/dating/DatingDateController$DatingDateDto.class b/bin/main/de/oaa/xxx/dating/DatingDateController$DatingDateDto.class
index 28ccc0c..752ce85 100644
Binary files a/bin/main/de/oaa/xxx/dating/DatingDateController$DatingDateDto.class and b/bin/main/de/oaa/xxx/dating/DatingDateController$DatingDateDto.class differ
diff --git a/bin/main/de/oaa/xxx/dating/DatingDateController$InterestResult.class b/bin/main/de/oaa/xxx/dating/DatingDateController$InterestResult.class
index 2343c68..af12b94 100644
Binary files a/bin/main/de/oaa/xxx/dating/DatingDateController$InterestResult.class and b/bin/main/de/oaa/xxx/dating/DatingDateController$InterestResult.class differ
diff --git a/bin/main/de/oaa/xxx/dating/DatingDateController.class b/bin/main/de/oaa/xxx/dating/DatingDateController.class
index c8b1e68..5154793 100644
Binary files a/bin/main/de/oaa/xxx/dating/DatingDateController.class and b/bin/main/de/oaa/xxx/dating/DatingDateController.class differ
diff --git a/bin/main/de/oaa/xxx/emailchange/EmailChangeController.class b/bin/main/de/oaa/xxx/emailchange/EmailChangeController.class
index 01ea370..1581e2e 100644
Binary files a/bin/main/de/oaa/xxx/emailchange/EmailChangeController.class and b/bin/main/de/oaa/xxx/emailchange/EmailChangeController.class differ
diff --git a/bin/main/de/oaa/xxx/feed/FeedController.class b/bin/main/de/oaa/xxx/feed/FeedController.class
index 02d12cf..812ae57 100644
Binary files a/bin/main/de/oaa/xxx/feed/FeedController.class and b/bin/main/de/oaa/xxx/feed/FeedController.class differ
diff --git a/bin/main/de/oaa/xxx/feedback/FeedbackController$FeedbackRequest.class b/bin/main/de/oaa/xxx/feedback/FeedbackController$FeedbackRequest.class
index db0d0f5..a1c5303 100644
Binary files a/bin/main/de/oaa/xxx/feedback/FeedbackController$FeedbackRequest.class and b/bin/main/de/oaa/xxx/feedback/FeedbackController$FeedbackRequest.class differ
diff --git a/bin/main/de/oaa/xxx/feedback/FeedbackController.class b/bin/main/de/oaa/xxx/feedback/FeedbackController.class
index 3deeb6a..50d4400 100644
Binary files a/bin/main/de/oaa/xxx/feedback/FeedbackController.class and b/bin/main/de/oaa/xxx/feedback/FeedbackController.class differ
diff --git a/bin/main/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.class b/bin/main/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.class
index 20363d3..cf9c06d 100644
Binary files a/bin/main/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.class and b/bin/main/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.class differ
diff --git a/bin/main/de/oaa/xxx/games/bdsm/controller/BdsmGameController.class b/bin/main/de/oaa/xxx/games/bdsm/controller/BdsmGameController.class
index c13117c..ffbbaef 100644
Binary files a/bin/main/de/oaa/xxx/games/bdsm/controller/BdsmGameController.class and b/bin/main/de/oaa/xxx/games/bdsm/controller/BdsmGameController.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter$1.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter$1.class
index ea41b23..f2a57c8 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter$1.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter$1.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter.class
index d2b1d19..4aba2b9 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter$1.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter$1.class
index 997a4e5..e9a37bc 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter$1.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter$1.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter.class
index aff2fd2..07e25c9 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardEnumListConverter.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$AssignTaskRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$AssignTaskRequest.class
index fa24030..595a745 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$AssignTaskRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$AssignTaskRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$CreateCardLockRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$CreateCardLockRequest.class
index 574fddf..8fed785 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$CreateCardLockRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$CreateCardLockRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$FreezeRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$FreezeRequest.class
index 6989bb8..d084d98 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$FreezeRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$FreezeRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$ModifyCardsRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$ModifyCardsRequest.class
index 056d2a6..f7709de 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$ModifyCardsRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$ModifyCardsRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$SpeedConfirmRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$SpeedConfirmRequest.class
index ace8387..beb20e4 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$SpeedConfirmRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$SpeedConfirmRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController.class
index c9c31c9..e965532 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockService.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockService.class
index 2677c8d..249f642 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockService.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockService.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardlockTemplateController$TemplateRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardlockTemplateController$TemplateRequest.class
index d8356ee..6512fa1 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardlockTemplateController$TemplateRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardlockTemplateController$TemplateRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardlockTemplateController.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardlockTemplateController.class
index abfaa87..09bbd5a 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardlockTemplateController.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardlockTemplateController.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/common/BaseLockService.class b/bin/main/de/oaa/xxx/games/chastity/common/BaseLockService.class
index 1552c2e..4ea5e99 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/common/BaseLockService.class and b/bin/main/de/oaa/xxx/games/chastity/common/BaseLockService.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/common/LockGameController.class b/bin/main/de/oaa/xxx/games/chastity/common/LockGameController.class
index f95aa89..d463fcd 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/common/LockGameController.class and b/bin/main/de/oaa/xxx/games/chastity/common/LockGameController.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/common/LockGameEntity.class b/bin/main/de/oaa/xxx/games/chastity/common/LockGameEntity.class
index db34e38..5258020 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/common/LockGameEntity.class and b/bin/main/de/oaa/xxx/games/chastity/common/LockGameEntity.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/common/LockGameService.class b/bin/main/de/oaa/xxx/games/chastity/common/LockGameService.class
index d9ed07d..d40c583 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/common/LockGameService.class and b/bin/main/de/oaa/xxx/games/chastity/common/LockGameService.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController$CreateOfferRequest.class b/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController$CreateOfferRequest.class
index 112c48f..0bd82da 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController$CreateOfferRequest.class and b/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController$CreateOfferRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController$JoinOfferRequest.class b/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController$JoinOfferRequest.class
index f2e1856..8b7a0a7 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController$JoinOfferRequest.class and b/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController$JoinOfferRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController.class b/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController.class
index 58eb67c..d0e5b1e 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController.class and b/bin/main/de/oaa/xxx/games/chastity/keyholder/KeyholderOfferController.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/spinningwheel/SpinningWheelConverter$1.class b/bin/main/de/oaa/xxx/games/chastity/spinningwheel/SpinningWheelConverter$1.class
index 8577e2c..9787369 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/spinningwheel/SpinningWheelConverter$1.class and b/bin/main/de/oaa/xxx/games/chastity/spinningwheel/SpinningWheelConverter$1.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/spinningwheel/SpinningWheelConverter.class b/bin/main/de/oaa/xxx/games/chastity/spinningwheel/SpinningWheelConverter.class
index 7782ffa..67d4cf5 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/spinningwheel/SpinningWheelConverter.class and b/bin/main/de/oaa/xxx/games/chastity/spinningwheel/SpinningWheelConverter.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/tasks/TaskListConverter$1.class b/bin/main/de/oaa/xxx/games/chastity/tasks/TaskListConverter$1.class
index ee27ff2..a5d1109 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/tasks/TaskListConverter$1.class and b/bin/main/de/oaa/xxx/games/chastity/tasks/TaskListConverter$1.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/tasks/TaskListConverter.class b/bin/main/de/oaa/xxx/games/chastity/tasks/TaskListConverter.class
index d8b7c04..ed86346 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/tasks/TaskListConverter.class and b/bin/main/de/oaa/xxx/games/chastity/tasks/TaskListConverter.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController$CreateTimeLockRequest.class b/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController$CreateTimeLockRequest.class
index dc71129..cc7bac5 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController$CreateTimeLockRequest.class and b/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController$CreateTimeLockRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController$FreezeRequest.class b/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController$FreezeRequest.class
index 4f52308..93de9c3 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController$FreezeRequest.class and b/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController$FreezeRequest.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController.class b/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController.class
index c3adeff..89fca4b 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController.class and b/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockController.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockService.class b/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockService.class
index bc82577..bed7c54 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockService.class and b/bin/main/de/oaa/xxx/games/chastity/timelock/TimeLockService.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockCallback.class b/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockCallback.class
index 261cf01..c232918 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockCallback.class and b/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockCallback.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService$TTLockAddPasscodeResponse.class b/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService$TTLockAddPasscodeResponse.class
index 4fa0871..700d598 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService$TTLockAddPasscodeResponse.class and b/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService$TTLockAddPasscodeResponse.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService$TTLockDetailResponse.class b/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService$TTLockDetailResponse.class
index ee2f4f5..2362ffa 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService$TTLockDetailResponse.class and b/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService$TTLockDetailResponse.class differ
diff --git a/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService.class b/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService.class
index c46754f..d72d7ea 100644
Binary files a/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService.class and b/bin/main/de/oaa/xxx/games/chastity/ttlock/TTLockService.class differ
diff --git a/bin/main/de/oaa/xxx/games/common/aufgaben/AufgabenList.class b/bin/main/de/oaa/xxx/games/common/aufgaben/AufgabenList.class
index bdd0776..b0b5807 100644
Binary files a/bin/main/de/oaa/xxx/games/common/aufgaben/AufgabenList.class and b/bin/main/de/oaa/xxx/games/common/aufgaben/AufgabenList.class differ
diff --git a/bin/main/de/oaa/xxx/games/common/aufgaben/DefaultFiller.class b/bin/main/de/oaa/xxx/games/common/aufgaben/DefaultFiller.class
index 5d9a5bc..208be87 100644
Binary files a/bin/main/de/oaa/xxx/games/common/aufgaben/DefaultFiller.class and b/bin/main/de/oaa/xxx/games/common/aufgaben/DefaultFiller.class differ
diff --git a/bin/main/de/oaa/xxx/gruppe/GruppenbeitragController.class b/bin/main/de/oaa/xxx/gruppe/GruppenbeitragController.class
index 824ef2e..99931e5 100644
Binary files a/bin/main/de/oaa/xxx/gruppe/GruppenbeitragController.class and b/bin/main/de/oaa/xxx/gruppe/GruppenbeitragController.class differ
diff --git a/bin/main/de/oaa/xxx/passwordreset/PasswordResetController.class b/bin/main/de/oaa/xxx/passwordreset/PasswordResetController.class
index c6040da..894cb71 100644
Binary files a/bin/main/de/oaa/xxx/passwordreset/PasswordResetController.class and b/bin/main/de/oaa/xxx/passwordreset/PasswordResetController.class differ
diff --git a/bin/main/de/oaa/xxx/registration/ActivationController.class b/bin/main/de/oaa/xxx/registration/ActivationController.class
index c9b165a..5d2ede8 100644
Binary files a/bin/main/de/oaa/xxx/registration/ActivationController.class and b/bin/main/de/oaa/xxx/registration/ActivationController.class differ
diff --git a/bin/main/de/oaa/xxx/registration/RegistrationService.class b/bin/main/de/oaa/xxx/registration/RegistrationService.class
index 3fb08ea..d821356 100644
Binary files a/bin/main/de/oaa/xxx/registration/RegistrationService.class and b/bin/main/de/oaa/xxx/registration/RegistrationService.class differ
diff --git a/bin/main/de/oaa/xxx/social/SseService.class b/bin/main/de/oaa/xxx/social/SseService.class
index 13c1fa2..0896d17 100644
Binary files a/bin/main/de/oaa/xxx/social/SseService.class and b/bin/main/de/oaa/xxx/social/SseService.class differ
diff --git a/bin/main/de/oaa/xxx/user/LoginController.class b/bin/main/de/oaa/xxx/user/LoginController.class
index d58a710..aae73a5 100644
Binary files a/bin/main/de/oaa/xxx/user/LoginController.class and b/bin/main/de/oaa/xxx/user/LoginController.class differ
diff --git a/bin/main/de/oaa/xxx/user/UserController$BdsmDefaultsRequest.class b/bin/main/de/oaa/xxx/user/UserController$BdsmDefaultsRequest.class
index 4eb5e2f..330531c 100644
Binary files a/bin/main/de/oaa/xxx/user/UserController$BdsmDefaultsRequest.class and b/bin/main/de/oaa/xxx/user/UserController$BdsmDefaultsRequest.class differ
diff --git a/bin/main/de/oaa/xxx/user/UserController$LocationFilterRequest.class b/bin/main/de/oaa/xxx/user/UserController$LocationFilterRequest.class
index 47774d5..1b3a031 100644
Binary files a/bin/main/de/oaa/xxx/user/UserController$LocationFilterRequest.class and b/bin/main/de/oaa/xxx/user/UserController$LocationFilterRequest.class differ
diff --git a/bin/main/de/oaa/xxx/user/UserController$NewMemberDto.class b/bin/main/de/oaa/xxx/user/UserController$NewMemberDto.class
index 7dda712..1a78f8d 100644
Binary files a/bin/main/de/oaa/xxx/user/UserController$NewMemberDto.class and b/bin/main/de/oaa/xxx/user/UserController$NewMemberDto.class differ
diff --git a/bin/main/de/oaa/xxx/user/UserController$ThemeRequest.class b/bin/main/de/oaa/xxx/user/UserController$ThemeRequest.class
index fc62094..399b068 100644
Binary files a/bin/main/de/oaa/xxx/user/UserController$ThemeRequest.class and b/bin/main/de/oaa/xxx/user/UserController$ThemeRequest.class differ
diff --git a/bin/main/de/oaa/xxx/user/UserController.class b/bin/main/de/oaa/xxx/user/UserController.class
index 2c2e094..8f5f2f1 100644
Binary files a/bin/main/de/oaa/xxx/user/UserController.class and b/bin/main/de/oaa/xxx/user/UserController.class differ
diff --git a/bin/main/de/oaa/xxx/vorlieben/VorliebenController$ItemDto.class b/bin/main/de/oaa/xxx/vorlieben/VorliebenController$ItemDto.class
index 53ce00a..220c81c 100644
Binary files a/bin/main/de/oaa/xxx/vorlieben/VorliebenController$ItemDto.class and b/bin/main/de/oaa/xxx/vorlieben/VorliebenController$ItemDto.class differ
diff --git a/bin/main/de/oaa/xxx/vorlieben/VorliebenController$KategorieWithItems.class b/bin/main/de/oaa/xxx/vorlieben/VorliebenController$KategorieWithItems.class
index c527919..c13aa4b 100644
Binary files a/bin/main/de/oaa/xxx/vorlieben/VorliebenController$KategorieWithItems.class and b/bin/main/de/oaa/xxx/vorlieben/VorliebenController$KategorieWithItems.class differ
diff --git a/bin/main/de/oaa/xxx/vorlieben/VorliebenController.class b/bin/main/de/oaa/xxx/vorlieben/VorliebenController.class
index 2bf78e3..22071ba 100644
Binary files a/bin/main/de/oaa/xxx/vorlieben/VorliebenController.class and b/bin/main/de/oaa/xxx/vorlieben/VorliebenController.class differ
diff --git a/bin/main/static/games/chastity/taskgame.html b/bin/main/static/games/chastity/taskgame.html
index b2760fa..36ffa82 100644
--- a/bin/main/static/games/chastity/taskgame.html
+++ b/bin/main/static/games/chastity/taskgame.html
@@ -23,6 +23,7 @@
letter-spacing: 0.08em;
margin-bottom: 0.5rem;
height: 1.2rem;
+ text-align: center;
}
.game-text {
font-size: 1rem;
@@ -31,6 +32,7 @@
white-space: pre-wrap;
height: 14rem;
overflow-y: auto;
+ text-align: center;
}
.game-timer {
font-size: 2.2rem;
@@ -52,48 +54,9 @@
margin-top: 1rem;
height: 2.75rem;
}
+ #confirmModal { display:none; }
+ #confirmModal.open { display:flex; }
- .game-requirements {
- margin: 0.75rem 0 0;
- display: flex;
- flex-direction: column;
- gap: 0.4rem;
- }
- .game-requirements-label {
- font-size: 0.7rem;
- font-weight: 700;
- text-transform: uppercase;
- letter-spacing: 0.07em;
- color: var(--color-muted);
- margin-bottom: 0.1rem;
- }
- .req-check {
- display: flex;
- align-items: center;
- gap: 0.55rem;
- padding: 0.4rem 0.6rem;
- border-radius: 7px;
- background: rgba(255,255,255,0.03);
- border: 1px solid var(--color-secondary);
- cursor: pointer;
- user-select: none;
- transition: border-color 0.15s, background 0.15s;
- font-size: 0.9rem;
- color: var(--color-text);
- }
- .req-check input[type="checkbox"] {
- accent-color: var(--color-primary);
- width: 15px;
- height: 15px;
- flex-shrink: 0;
- cursor: pointer;
- }
- .req-check.done {
- border-color: var(--color-primary);
- background: rgba(233,69,96,0.07);
- color: var(--color-muted);
- text-decoration: line-through;
- }
.level-display {
display: flex;
@@ -106,16 +69,6 @@
object-fit: contain;
}
- .lock-messages {
- background: rgba(233,69,96,0.1);
- border: 1px solid rgba(233,69,96,0.3);
- border-radius: 10px;
- padding: 1rem 1.1rem;
- margin-bottom: 1.25rem;
- }
- .lock-messages p { margin: 0 0 0.5rem; font-size: 0.9rem; line-height: 1.5; }
- .lock-messages p:last-child { margin: 0; }
-
.init-box {
background: var(--color-card);
border: 1px solid var(--color-secondary);
@@ -176,15 +129,13 @@
margin-top: 0.6rem;
}
- #finisherBox {
- background: linear-gradient(135deg, rgba(233,69,96,0.15), rgba(155,89,182,0.12));
- border: 1px solid rgba(233,69,96,0.4);
- border-radius: 14px;
- padding: 1.5rem;
+ #levelTrophy {
+ font-size: 3.5rem;
+ line-height: 72px;
+ width: 72px;
+ height: 72px;
text-align: center;
}
- #finisherBox .trophy { font-size: 2.5rem; margin-bottom: 0.5rem; }
- #finisherBox h2 { font-size: 1.1rem; margin: 0 0 0.75rem; color: var(--color-primary); }
@@ -195,11 +146,9 @@
![Level]()
+
🏆
-
-
-
@@ -232,8 +181,7 @@
-
-
+
@@ -241,38 +189,50 @@
-
🔓 Sperre aufgehoben
+
🔓 Zeitstrafe verbüßt
-
-
🔓 Temporäre Öffnung erforderlich
-
-
-
Entsperrcode
-
+
+
+
🔓 Entsperrcode
+
+
+
+
+
-
-
+
+
+
🔒 Lock schließen
+
+
Nutze den Entsperrcode um den Schlüssel wieder zu verschließen.
+
+
+
+
+
+
+
-
-
🏆
-
Level 6 erreicht!
-
-
-
-
-
-
-
00:00
-
+
@@ -291,6 +251,17 @@
+
+
+
Bestätigung
+
+
+
+
+
+
+
+
diff --git a/src/main/java/Ideen.txt b/src/main/java/Ideen.txt
index 64b32e5..96bd128 100644
--- a/src/main/java/Ideen.txt
+++ b/src/main/java/Ideen.txt
@@ -1,13 +1,4 @@
-Umsetzung des Spiels:
-Der Lockee hat eine Stunde Zeit das Spiel zu starten, dies geschieht per Knopfdruck
-Wenn er dies nicht schafft -> bei Keyholder, benachrichtige Keyholder und lass sie/ihn entscheiden, ansonsten freeze wie bei freeze card
-Übernimm die Logik des Spiels aus dem BDSM Game.
-Falls eine Zeitstrafe eine temporäre Öffnung vor oder nach der Aufgabe benötigt, öffne das Lock für 5 Minuten. Überzogene Zeit wird addiert und am Ende des Locks gefreezed
-Selbiges gilt, falls der finisher eine temporäre Öffnung danach erfoldert
-Benötigt der Finisher eine Öffnung davor, verwende die Logik der Cum Card, und addiere diese Zeit auf die möglicherweise schon vorhandenen Freeze Zeit am Ende des Locks
-
-
wenn ich dates erfasse kann ich diese auch zu einer Verantstaltung machen,
hier kann ich die auswählen, zu denen ich "Ich bin dabei" gedrückt habe, das
diff --git a/src/main/java/de/oaa/xxx/config/StringListConverter.java b/src/main/java/de/oaa/xxx/config/StringListConverter.java
index dfb2566..0241591 100644
--- a/src/main/java/de/oaa/xxx/config/StringListConverter.java
+++ b/src/main/java/de/oaa/xxx/config/StringListConverter.java
@@ -1,38 +1,43 @@
-package de.oaa.xxx.config;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import jakarta.persistence.AttributeConverter;
-import jakarta.persistence.Converter;
-
-import java.util.List;
-
-@Converter
-public class StringListConverter implements AttributeConverter
, String> {
-
- private static final ObjectMapper mapper = new ObjectMapper();
-
- @Override
- public String convertToDatabaseColumn(List list) {
- if (list == null || list.isEmpty()) return null;
- try {
- return mapper.writeValueAsString(list);
- } catch (Exception e) {
- return null;
- }
- }
-
- @Override
- public List convertToEntityAttribute(String json) {
- if (json == null || json.isBlank()) return List.of();
- try {
- if (!json.startsWith("[")) {
- // Legacy: single base64 string
- return List.of(json);
- }
- return mapper.readValue(json, new TypeReference<>() {});
- } catch (Exception e) {
- return List.of();
- }
- }
-}
+package de.oaa.xxx.config;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import jakarta.persistence.AttributeConverter;
+import jakarta.persistence.Converter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+@Converter
+public class StringListConverter implements AttributeConverter, String> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(StringListConverter.class);
+ private static final ObjectMapper mapper = new ObjectMapper();
+
+ @Override
+ public String convertToDatabaseColumn(List list) {
+ if (list == null || list.isEmpty()) return null;
+ try {
+ return mapper.writeValueAsString(list);
+ } catch (Exception e) {
+ LOGGER.warn("Fehler beim Serialisieren der String-Liste in DB-Spalte", e);
+ return null;
+ }
+ }
+
+ @Override
+ public List convertToEntityAttribute(String json) {
+ if (json == null || json.isBlank()) return List.of();
+ try {
+ if (!json.startsWith("[")) {
+ // Legacy: single base64 string
+ return List.of(json);
+ }
+ return mapper.readValue(json, new TypeReference<>() {});
+ } catch (Exception e) {
+ LOGGER.warn("Fehler beim Deserialisieren der String-Liste aus DB-Spalte: {}", json, e);
+ return List.of();
+ }
+ }
+}
diff --git a/src/main/java/de/oaa/xxx/dating/DatingController.java b/src/main/java/de/oaa/xxx/dating/DatingController.java
index f282cf6..10b0adb 100644
--- a/src/main/java/de/oaa/xxx/dating/DatingController.java
+++ b/src/main/java/de/oaa/xxx/dating/DatingController.java
@@ -3,6 +3,8 @@ package de.oaa.xxx.dating;
import de.oaa.xxx.social.SseService;
import de.oaa.xxx.subscription.SubscriptionLimitService;
import de.oaa.xxx.user.Geschlecht;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import de.oaa.xxx.user.Neigung;
import de.oaa.xxx.user.UserEntity;
import de.oaa.xxx.user.UserRepository;
@@ -24,6 +26,8 @@ import java.util.stream.Collectors;
@RequestMapping("/dating")
public class DatingController {
+ private static final Logger LOGGER = LoggerFactory.getLogger(DatingController.class);
+
private static final Set POSITIVE_RATINGS = Set.of(
VorliebeBewertung.MAG_ICH, VorliebeBewertung.UNBEDINGT, VorliebeBewertung.WILL_AUSPROBIEREN);
@@ -254,7 +258,10 @@ public class DatingController {
return values.stream()
.map(s -> {
try { return Enum.valueOf(enumClass, s); }
- catch (IllegalArgumentException e) { return null; }
+ catch (IllegalArgumentException e) {
+ LOGGER.warn("Ungültiger Enum-Wert in Dating: {}", s);
+ return null;
+ }
})
.filter(Objects::nonNull)
.toList();
diff --git a/src/main/java/de/oaa/xxx/dating/DatingDateController.java b/src/main/java/de/oaa/xxx/dating/DatingDateController.java
index 7076773..39b0a21 100644
--- a/src/main/java/de/oaa/xxx/dating/DatingDateController.java
+++ b/src/main/java/de/oaa/xxx/dating/DatingDateController.java
@@ -4,6 +4,8 @@ import de.oaa.xxx.social.SystemMessageService;
import de.oaa.xxx.social.entity.MessageCause;
import de.oaa.xxx.social.repository.BlockRepository;
import de.oaa.xxx.subscription.SubscriptionLimitService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import de.oaa.xxx.user.Geschlecht;
import de.oaa.xxx.user.Neigung;
import de.oaa.xxx.user.UserEntity;
@@ -24,6 +26,8 @@ import java.util.stream.Collectors;
@RequestMapping("/dating/dates")
public class DatingDateController {
+ private static final Logger LOGGER = LoggerFactory.getLogger(DatingDateController.class);
+
private static final int MAX_DATES_STANDARD = 1;
private static final int MAX_DATES_PRO = 5;
@@ -388,7 +392,10 @@ public class DatingDateController {
return values.stream()
.map(s -> {
try { return Enum.valueOf(enumClass, s); }
- catch (IllegalArgumentException e) { return null; }
+ catch (IllegalArgumentException e) {
+ LOGGER.warn("Ungültiger Enum-Wert in DatingDate: {}", s);
+ return null;
+ }
})
.filter(Objects::nonNull)
.toList();
diff --git a/src/main/java/de/oaa/xxx/emailchange/EmailChangeController.java b/src/main/java/de/oaa/xxx/emailchange/EmailChangeController.java
index b6ac423..14d05d0 100644
--- a/src/main/java/de/oaa/xxx/emailchange/EmailChangeController.java
+++ b/src/main/java/de/oaa/xxx/emailchange/EmailChangeController.java
@@ -102,6 +102,7 @@ public class EmailChangeController {
try {
tokenId = UUID.fromString(token);
} catch (IllegalArgumentException e) {
+ LOGGER.warn("Ungültige E-Mail-Adresse beim Ändern: {}", e.getMessage());
response.sendRedirect("/login.html");
return;
}
diff --git a/src/main/java/de/oaa/xxx/feed/FeedController.java b/src/main/java/de/oaa/xxx/feed/FeedController.java
index 98380db..20b6f29 100644
--- a/src/main/java/de/oaa/xxx/feed/FeedController.java
+++ b/src/main/java/de/oaa/xxx/feed/FeedController.java
@@ -147,6 +147,7 @@ public class FeedController extends BaseController {
try {
typ = BeitragTyp.valueOf(req.beitragTyp());
} catch (Exception e) {
+ LOGGER.warn("Ungültiger BeitragTyp: {}", req.beitragTyp());
return ResponseEntity.badRequest().build();
}
@@ -202,6 +203,7 @@ public class FeedController extends BaseController {
try {
typ = BeitragTyp.valueOf(req.beitragTyp());
} catch (Exception e) {
+ LOGGER.warn("Ungültiger BeitragTyp: {}", req.beitragTyp());
return ResponseEntity.badRequest().build();
}
diff --git a/src/main/java/de/oaa/xxx/feedback/FeedbackController.java b/src/main/java/de/oaa/xxx/feedback/FeedbackController.java
index b682866..a8ac1ac 100644
--- a/src/main/java/de/oaa/xxx/feedback/FeedbackController.java
+++ b/src/main/java/de/oaa/xxx/feedback/FeedbackController.java
@@ -4,6 +4,8 @@ import de.oaa.xxx.mail.Email;
import de.oaa.xxx.mail.MailService;
import de.oaa.xxx.support.SupportUserService;
import de.oaa.xxx.user.UserRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -20,6 +22,8 @@ import java.util.concurrent.ConcurrentHashMap;
@RequestMapping("/api/feedback")
public class FeedbackController {
+ private static final Logger LOGGER = LoggerFactory.getLogger(FeedbackController.class);
+
private final MailService mailService;
private final FeedbackRepository feedbackRepository;
private final UserRepository userRepository;
@@ -104,7 +108,7 @@ public class FeedbackController {
);
mailService.send(email);
} catch (Exception e) {
- // Mail-Server nicht erreichbar – Eintrag ist bereits gespeichert
+ LOGGER.warn("Mail-Server nicht erreichbar – Feedback-Eintrag gespeichert, E-Mail nicht versandt", e);
}
return ResponseEntity.ok().build();
diff --git a/src/main/java/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.java b/src/main/java/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.java
index 3cd776c..c598276 100644
--- a/src/main/java/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.java
+++ b/src/main/java/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.java
@@ -199,8 +199,10 @@ public class AufgabenGruppeController {
aufgabenGruppeService.copyGruppe(gruppeId, user.getUserId());
return ResponseEntity.status(201).build();
} catch (IllegalStateException e) {
+ LOGGER.warn("Konflikt beim Speichern der AufgabenGruppe: {}", e.getMessage());
return ResponseEntity.status(409).build();
} catch (IllegalArgumentException e) {
+ LOGGER.warn("Ungültiger Wert in AufgabenGruppe: {}", e.getMessage());
String msg = e.getMessage();
if (msg != null && msg.contains("nicht gefunden")) return ResponseEntity.notFound().build();
return ResponseEntity.status(403).build();
diff --git a/src/main/java/de/oaa/xxx/games/bdsm/controller/BdsmGameController.java b/src/main/java/de/oaa/xxx/games/bdsm/controller/BdsmGameController.java
index 5b05c79..889f20a 100644
--- a/src/main/java/de/oaa/xxx/games/bdsm/controller/BdsmGameController.java
+++ b/src/main/java/de/oaa/xxx/games/bdsm/controller/BdsmGameController.java
@@ -567,10 +567,12 @@ public class BdsmGameController extends BaseController {
response.put("unlockCode", newLock.getUnlockCode());
return ResponseEntity.ok(response);
} catch (IllegalArgumentException e) {
+ LOGGER.warn("Ungültiger Parameter in BdsmGame: {}", e.getMessage());
String msg = e.getMessage();
if (msg != null && msg.contains("Session")) return ResponseEntity.notFound().build();
return ResponseEntity.badRequest().build();
} catch (IllegalStateException e) {
+ LOGGER.warn("Konflikt in BdsmGame: {}", e.getMessage());
return ResponseEntity.status(409).build();
}
}
diff --git a/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter.java b/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter.java
index d0314bc..d7cc8b7 100644
--- a/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter.java
+++ b/src/main/java/de/oaa/xxx/games/chastity/cardlock/CardCountMapConverter.java
@@ -4,6 +4,8 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.persistence.AttributeConverter;
import jakarta.persistence.Converter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -11,6 +13,7 @@ import java.util.Map;
@Converter
public class CardCountMapConverter implements AttributeConverter