weitere änderungen an der Oberfläche, timelock hinzugefügt

This commit is contained in:
2026-03-23 16:11:28 +01:00
parent 409f003aec
commit 4f521b6725
132 changed files with 3743 additions and 16946 deletions

View File

@@ -26,7 +26,17 @@
"Bash(ls:*)",
"Bash(./gradlew compileJava)",
"Bash(./gradlew build:*)",
"Bash(find /home/mario/Workspaces/xxx-thegame -type f \\\\\\(-name *bdsm* -o -name *BDSM* \\\\\\))"
"Bash(find /home/mario/Workspaces/xxx-thegame -type f \\\\\\(-name *bdsm* -o -name *BDSM* \\\\\\))",
"Bash(xargs -I {} basename {})",
"Bash(./gradlew compileJava --info)",
"Bash(./gradlew compileJava --stacktrace)",
"Bash(JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 ./gradlew compileJava)",
"Bash(do echo:*)",
"Bash(__NEW_LINE_20ef1f88f3630ae7__ grep:*)",
"Bash(__NEW_LINE_20ef1f88f3630ae7__ done:*)",
"Bash(__NEW_LINE_1bd3b9012681f121__ grep:*)",
"Bash(__NEW_LINE_1bd3b9012681f121__ done:*)",
"Bash(head -15 grep -n -B5 -A2 \"max-width: 480px\\\\|max-width:480px\" /home/mario/Workspaces/xxx-thegame/xxxthegame/src/main/resources/static/joinlock.html)"
]
}
}

View File

@@ -1,5 +1,5 @@
#Sun Mar 22 19:48:43 CET 2026
#Mon Mar 23 15:59:12 CET 2026
display=\:0
host=Mario-Linux
process-id=106706
process-id=144468
user=mario

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,21 @@
[ {
"version" : "9.6.0-20260323005019+0000",
"buildTime" : "20260323005019+0000",
"commitId" : "d20e3feb4da17c82d2df8774ea838cdd230628ce",
"current" : false,
"snapshot" : true,
"nightly" : true,
"releaseNightly" : false,
"activeRc" : false,
"rcFor" : "",
"milestoneFor" : "",
"broken" : false,
"downloadUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260323005019+0000-bin.zip",
"checksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260323005019+0000-bin.zip.sha256",
"checksum" : "22865868bc4c8aa1f3cffb398397d3d6058246129490e168ecbbaaed24cd9fa1",
"wrapperChecksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260323005019+0000-wrapper.jar.sha256",
"wrapperChecksum" : "f307680272dffdb8e636f1169adfbf693513005c80aa06e8d381f20390a06e6a"
}, {
"version" : "9.5.0-20260322013634+0000",
"buildTime" : "20260322013634+0000",
"commitId" : "01db0eb99f616dd415a084ffcce4cb2c185d5a2a",
@@ -15,23 +32,6 @@
"checksum" : "3e8a6689594399f81087ad962b1c489e0ae57201af0c6c00ea63d9d07e48506e",
"wrapperChecksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.0-20260322013634+0000-wrapper.jar.sha256",
"wrapperChecksum" : "f307680272dffdb8e636f1169adfbf693513005c80aa06e8d381f20390a06e6a"
}, {
"version" : "9.6.0-20260322000231+0000",
"buildTime" : "20260322000231+0000",
"commitId" : "d63be1b9cd4d937f4a9f5cf7ee78eec20fe5354e",
"current" : false,
"snapshot" : true,
"nightly" : true,
"releaseNightly" : false,
"activeRc" : false,
"rcFor" : "",
"milestoneFor" : "",
"broken" : false,
"downloadUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260322000231+0000-bin.zip",
"checksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260322000231+0000-bin.zip.sha256",
"checksum" : "80f3af587bc824675e2a5617c7f30a3b8e4888746d486bc8b3517ebf84f028a9",
"wrapperChecksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260322000231+0000-wrapper.jar.sha256",
"wrapperChecksum" : "f307680272dffdb8e636f1169adfbf693513005c80aa06e8d381f20390a06e6a"
}, {
"version" : "9.4.1",
"buildTime" : "20260319084628+0000",

View File

@@ -1,14 +0,0 @@
/*******************************************************************************
* Copyright (c) 2023 Gradle Inc. and others
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
******************************************************************************/
initscript {
allprojects {
apply plugin: "eclipse"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="org.eclipse.buildship.ui.wizard.project.creation">
<item key="project_location" value="/home/mario/Workspaces/xxx-thegame/xxxthegame"/>
<item key="use_default_location" value="true"/>
<section name="ProjectCreationWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="0"/>
<item key="DIALOG_Y_ORIGIN" value="0"/>
<item key="DIALOG_WIDTH" value="613"/>
<item key="DIALOG_HEIGHT" value="796"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
</section>
<section name="org.eclipse.buildship.ui.wizard.project.import">
<item key="project_location" value="/home/mario/Workspaces/xxx-thegame/xxxthegame"/>
<section name="ProjectImportWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="20"/>
<item key="DIALOG_Y_ORIGIN" value="20"/>
<item key="DIALOG_WIDTH" value="613"/>
<item key="DIALOG_HEIGHT" value="550"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
</section>
</section>

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<item key="org.eclipse.jdt.internal.debug.ui.actions.PopupInspectAction$2DIALOG_WIDTH" value="979"/>
<item key="org.eclipse.jdt.internal.debug.ui.actions.PopupInspectAction$2DIALOG_HEIGHT" value="690"/>
<section name="org.eclipse.debug.ui.LAUNCH_CONFIGURATIONS_DIALOG_SECTION">
<item key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_1" value="237"/>
<item key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_2" value="762"/>
<item key="org.eclipse.debug.ui.EXPANDED_NODES" value=""/>
<item key="DIALOG_WIDTH" value="800"/>
<item key="DIALOG_HEIGHT" value="640"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
<section name="org.eclipse.debug.ui.SELECT_LAUNCH_SHORTCUT_DIALOG">
<item key="DIALOG_WIDTH" value="295"/>
<item key="DIALOG_HEIGHT" value="419"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
<section name="org.eclipse.debug.ui.SCOPED_SAVE_SELECTION_DIALOG">
<item key="DIALOG_WIDTH" value="833"/>
<item key="DIALOG_HEIGHT" value="370"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
</section>

File diff suppressed because one or more lines are too long

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="org.eclipse.epp.internal.mpc.ui.wizards.MarketplaceWizardDialog_dialogBounds.absolute">
<item key="DIALOG_X_ORIGIN" value="26"/>
<item key="DIALOG_Y_ORIGIN" value="23"/>
<item key="DIALOG_WIDTH" value="791"/>
<item key="DIALOG_HEIGHT" value="890"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
</section>

View File

@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="org.eclipse.equinox.internal.p2.ui.dialogs.InstallWizard.WizardSettings">
<item key="DIALOG_X_ORIGIN" value="20"/>
<item key="DIALOG_Y_ORIGIN" value="20"/>
<item key="DIALOG_WIDTH" value="937"/>
<item key="DIALOG_HEIGHT" value="754"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
<section name="AvailableIUsPage">
<item key="AvailableViewType" value="1"/>
<item key="ShowLatestVersionsOnly" value="true"/>
<item key="HideInstalledContent" value="true"/>
<item key="ResolveInstallWithAllSites" value="true"/>
<item key="FilterOnEnv" value="false"/>
<item key="AvailableNameColumnWidth" value="525"/>
<item key="AvailableVersionColumnWidth" value="280"/>
<item key="AvailableListSashWeight" value="800"/>
<item key="AvailableDetailsSashWeight" value="200"/>
</section>
<section name="org.eclipse.equinox.internal.p2.ui.dialogs.InstallWizard.SelectableIUsPage">
<item key="NameColumnWidth" value="420"/>
<item key="VersionColumnWidth" value="140"/>
<item key="IDColumnWidth" value="365"/>
<item key="ListSashWeight" value="800"/>
<item key="DetailsSashWeight" value="200"/>
</section>
<section name="org.eclipse.equinox.internal.p2.ui.dialogs.InstallWizard.ResolutionResultsPage">
<item key="NameColumnWidth" value="400"/>
<item key="VersionColumnWidth" value="200"/>
<item key="IDColumnWidth" value="200"/>
<item key="ListSashWeight" value="800"/>
<item key="DetailsSashWeight" value="200"/>
</section>
</section>

View File

@@ -1,107 +0,0 @@
INDEX VERSION 1.134+/home/mario/Workspaces/xxx-thegame/.metadata/.plugins/org.eclipse.jdt.core
794464160.index
2655170954.index
176453541.index
677104696.index
341080888.index
774576701.index
4134502745.index
41199409.index
2217896880.index
134995224.index
4025319337.index
900586112.index
9341915.index
2929476459.index
2065500052.index
3051047092.index
815902026.index
3718169413.index
721517855.index
369020172.index
3899935016.index
2157310342.index
2488355463.index
3572667491.index
2799433906.index
675283020.index
2032345814.index
3839581777.index
2466743981.index
13999064.index
673436610.index
3972616808.index
1914043487.index
3154281632.index
766461225.index
983587063.index
1117161889.index
286641703.index
3371017197.index
4080887926.index
2941512597.index
1730373086.index
3882180612.index
4020783879.index
2900482015.index
3059431983.index
833027591.index
13156219.index
37241354.index
4088356365.index
1295630681.index
2701419231.index
3939420913.index
1067882983.index
1318022262.index
773718761.index
2311226047.index
3539841425.index
1865797976.index
2455962971.index
2576972120.index
2389383899.index
2226615777.index
3515611559.index
2899155238.index
836138551.index
2138052223.index
3763224039.index
3728851734.index
2236377038.index
3547251881.index
1138623861.index
2376429633.index
2519831052.index
371677185.index
2874180664.index
1090991043.index
2826242951.index
2127778675.index
2628068441.index
1063231598.index
2939623059.index
1223891870.index
3769604005.index
2237645717.index
3158780236.index
2852275968.index
2403041570.index
1704193220.index
2004806901.index
3952767374.index
3416862923.index
3912907421.index
781064456.index
352173590.index
766439048.index
3424266581.index
1765772496.index
2494834982.index
3514351073.index
2247053514.index
1938594271.index
3892622621.index
1022297761.index
1780956574.index
1256436118.index

View File

@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<dirs>
<entry loc="/usr/lib/jvm/java-21-openjdk-amd64" stamp="1773694107630"/>
<entry loc="/usr/lib/jvm/java-21-openjdk-amd64" stamp="1774248231673"/>
<entry loc="/usr/lib/jvm/java-26-openjdk-amd64" stamp="1774247449025"/>
<entry loc="/home/mario/Programme/jdk-21" stamp="1774248849578"/>
</dirs>

View File

@@ -1,27 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<libraryInfos>
<libraryInfo home="C:\Users\mario\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_21.0.10.v20260205-0638\jre" version="21.0.10"/>
<libraryInfo home="C:\Users\mario\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_21.0.10.v20260205-0638" version="21.0.10">
<bootpath>
<entry path="null"/>
</bootpath>
<extensionDirs>
<entry path="null"/>
</extensionDirs>
<endorsedDirs>
<entry path="null"/>
</endorsedDirs>
</libraryInfo>
<libraryInfo home="/usr/lib/jvm/java-21-openjdk-amd64" version="21.0.10"/>
<libraryInfo home="/snap/eclipse/131/usr/lib/eclipse/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.linux.x86_64_21.0.9.v20251105-0741" version="21.0.9">
<bootpath>
<entry path="null"/>
</bootpath>
<extensionDirs>
<entry path="null"/>
</extensionDirs>
<endorsedDirs>
<entry path="null"/>
</endorsedDirs>
</libraryInfo>
<libraryInfo home="/usr/lib/jvm/java-26-openjdk-amd64" version="26"/>
<libraryInfo home="/home/mario/Programme/jdk-21" version="21.0.6"/>
</libraryInfos>

View File

@@ -1,16 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<typeInfoHistroy>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.aufgaben.controller{AboController.java[AboController" modifiers="1" timestamp="1773400404000"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.history{GameHistoryEntity.java[GameHistoryEntity" modifiers="1" timestamp="1773860770365"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.bdsm.controller{BdsmGameController.java[BdsmGameController" modifiers="1" timestamp="1774017499554"/>
<typeInfo handle="=xxxthegame/\/usr\/lib\/jvm\/java-21-openjdk-amd64\/lib\/jrt-fs.jar`java.base=/javadoc_location=/https:\/\/docs.oracle.com\/en\/java\/javase\/21\/docs\/api\/=/&lt;java.util(UUID.class[UUID" modifiers="49" timestamp="1769125611000"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.chastity.cardlock{CardLockController.java[CardLockController" modifiers="1" timestamp="1774198561526"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.chastity.cardlock{CardLockEntity.java[CardLockEntity" modifiers="1" timestamp="1774171624571"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.chastity.timelock{TimeLockEntity.java[TimeLockEntity" modifiers="1" timestamp="1774174304909"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.chastity.timelock{TimeLockTemplateEntity.java[TimeLockTemplateEntity" modifiers="1" timestamp="1774174437363"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.chastity.tasks{Task.java[Task" modifiers="1" timestamp="1774181757140"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.chastity.keyholder{KeyholderVerificationRepository.java[KeyholderVerificationRepository" modifiers="513" timestamp="1774197695163"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.chastity.keyholder{KeyholderVerificationEntity.java[KeyholderVerificationEntity" modifiers="1" timestamp="1774198252535"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.chastity.community{CommunityVerificationEntity.java[CommunityVerificationEntity" modifiers="1" timestamp="1774198326209"/>
<typeInfo handle="=xxxthegame/src\/main\/java=/gradle_scope=/main=/=/gradle_used_by_scope=/main,test=/&lt;de.oaa.xxx.games.chastity.common{Verification.java[Verification" modifiers="513" timestamp="1774198235758"/>
</typeInfoHistroy>
<typeInfoHistroy/>

View File

@@ -1,63 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<qualifiedTypeNameHistroy>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.lockcontroll.LockControl"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.lockcontroll.TTLockControl"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.lockcontroll.TrustLockControl"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.lockcontroll.UnlockcodeLockControl"/>
<fullyQualifiedTypeName name="java.util.Random"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.cardlock.TempOpeningReason"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.keyholder.KeyholderNotificationRepository"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.cardlock.UnlockCodeHistoryService"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.timelock.TimeLockEntity"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.timelock.TimeLockRepository"/>
<fullyQualifiedTypeName name="jakarta.persistence.Entity"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.pillory.PilloryEntity"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.pillory.PilloryReason"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.pillory.PilloryRepository"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.timelock.TimeLockService"/>
<fullyQualifiedTypeName name="jakarta.persistence.Table"/>
<fullyQualifiedTypeName name="jakarta.persistence.Inheritance"/>
<fullyQualifiedTypeName name="jakarta.persistence.DiscriminatorColumn"/>
<fullyQualifiedTypeName name="jakarta.persistence.DiscriminatorType"/>
<fullyQualifiedTypeName name="jakarta.persistence.EnumType"/>
<fullyQualifiedTypeName name="org.springframework.stereotype.Controller"/>
<fullyQualifiedTypeName name="java.util.UUID"/>
<fullyQualifiedTypeName name="com.fasterxml.jackson.core.sym.Name3"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.tasks.TaskMode"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.common.BaseLockTemplateEntity"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.BaseCommunityDisplayDTO"/>
<fullyQualifiedTypeName name="org.springframework.data.domain.Page"/>
<fullyQualifiedTypeName name="org.springframework.data.domain.Sort.Direction"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityPilloryReason"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.BaseCommunityDisplayEntity"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityPilloryDTO"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityPilloryRepository"/>
<fullyQualifiedTypeName name="org.springframework.web.bind.annotation.RestController"/>
<fullyQualifiedTypeName name="org.springframework.web.bind.annotation.RequestMapping"/>
<fullyQualifiedTypeName name="org.springframework.web.bind.annotation.GetMapping"/>
<fullyQualifiedTypeName name="de.oaa.xxx.user.UserRepository"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityTaskVoteRepository"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityTaskVoteEntryRepository"/>
<fullyQualifiedTypeName name="org.springframework.web.bind.annotation.PathVariable"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityTaskVoteDTO"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityTaskVoteEntryDTO"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.common.BaseLockTemplateRepository"/>
<fullyQualifiedTypeName name="org.springframework.data.jpa.repository.JpaRepository"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.common.BaseLockEntity"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.common.BaseLockRepository"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.tasks.Task"/>
<fullyQualifiedTypeName name="java.util.ArrayList"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityTaskVoteDisplayEntryDTO"/>
<fullyQualifiedTypeName name="org.springframework.http.ResponseEntity"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityTaskVoteDisplayDTO"/>
<fullyQualifiedTypeName name="jakarta.persistence.Column"/>
<fullyQualifiedTypeName name="java.util.List"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.common.Verification"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.keyholder.KeyholderVerificationEntity"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.common.VerificationDTO"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.common.CodeCreator"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.common.VerificationCommonDTO"/>
<fullyQualifiedTypeName name="de.oaa.xxx.games.chastity.community.CommunityVerificationEntity"/>
<fullyQualifiedTypeName name="java.time.LocalDate"/>
<fullyQualifiedTypeName name="java.time.LocalDateTime"/>
</qualifiedTypeNameHistroy>
<qualifiedTypeNameHistroy/>

View File

@@ -1,110 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<item key="filters_last_used" value="filter_imports;"/>
<section name="org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart">
<item key="group_libraries" value="true"/>
<item key="layout" value="1"/>
<item key="layout" value="2"/>
<item key="rootMode" value="1"/>
<item key="linkWithEditor" value="true"/>
<item key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;packageExplorer group_libraries=&quot;1&quot; layout=&quot;1&quot; linkWithEditor=&quot;1&quot; rootMode=&quot;1&quot; workingSetName=&quot;Aggregate for window 1773600542055&quot;&gt;&#x0A;&lt;customFilters userDefinedPatternsEnabled=&quot;false&quot;&gt;&#x0A;&lt;xmlDefinedFilters&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.StaticsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.buildship.ui.packageexplorer.filter.gradle.buildfolder&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.mylyn.java.ui.MembersFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.m2e.MavenModuleFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.buildship.ui.packageexplorer.filter.gradle.subProject&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.DeprecatedMembersFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.FieldsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;/xmlDefinedFilters&gt;&#x0A;&lt;/customFilters&gt;&#x0A;&lt;/packageExplorer&gt;"/>
</section>
<section name="JavaElementSearchActions">
</section>
<section name="completion_proposal_size">
</section>
<section name="quick_assist_proposal_size">
</section>
<section name="RefactoringWizard.preview">
<item key="width" value="600"/>
<item key="height" value="400"/>
</section>
<section name="SelfEncapsulateFieldWizard">
<item key="GenerateJavadoc" value="false"/>
</section>
<section name="RenameInformationPopup">
</section>
<section name="org.eclipse.ltk.ui.refactoring.settings">
<item key="renameSubpackages" value="false"/>
<item key="updateTextualMatches" value="false"/>
<item key="updateQualifiedNames" value="false"/>
<item key="patterns" value="*"/>
<item key="updateSimilarElements" value="false"/>
<item key="updateSimilarElementsMatchStrategy" value="1"/>
</section>
<section name="org.eclipse.jdt.internal.ui.dialogs.OpenTypeSelectionDialog2">
<item key="ShowStatusLine" value="true"/>
<item key="History" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;History/&gt;"/>
<item key="WorkingSet" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;workingSet workingSetName=&quot;&quot;/&gt;"/>
<section name="DialogBoundsSettings">
<item key="DIALOG_HEIGHT" value="500"/>
<item key="DIALOG_WIDTH" value="600"/>
<item key="DIALOG_X_ORIGIN" value="20"/>
<item key="DIALOG_Y_ORIGIN" value="20"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
</section>
<section name="OptionalMessageDialog.hide.">
<item key="org.eclipse.jdt.ui.typecomment.deprecated" value="true"/>
</section>
<section name="NewClassCreationWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="20"/>
<item key="DIALOG_Y_ORIGIN" value="20"/>
<item key="DIALOG_WIDTH" value="641"/>
<item key="DIALOG_HEIGHT" value="739"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
<section name="NewClassWizardPage">
<item key="create_constructor" value="false"/>
<item key="create_unimplemented" value="true"/>
</section>
<section name="org.eclipse.jdt.internal.ui.text.QuickOutline">
<item key="GoIntoTopLevelTypeAction.isChecked" value="false"/>
<item key="org.eclipse.jdt.internal.ui.text.JavaOutlineInformationControlDIALOG_WIDTH" value="400"/>
<item key="org.eclipse.jdt.internal.ui.text.JavaOutlineInformationControlDIALOG_HEIGHT" value="340"/>
<item key="org.eclipse.jdt.internal.ui.text.JavaOutlineInformationControlDIALOG_USE_PERSISTED_SIZE" value="true"/>
<item key="org.eclipse.jdt.internal.ui.text.JavaOutlineInformationControlDIALOG_USE_PERSISTED_LOCATION" value="false"/>
</section>
<section name="NewPackageCreationWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="20"/>
<item key="DIALOG_Y_ORIGIN" value="20"/>
<item key="DIALOG_WIDTH" value="613"/>
<item key="DIALOG_HEIGHT" value="500"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
<section name="BuildPathsPropertyPage">
<item key="pageIndex" value="3"/>
</section>
<section name="org.eclipse.jdt.internal.ui.typehierarchy.QuickHierarchy">
<item key="org.eclipse.jdt.internal.ui.typehierarchy.HierarchyInformationControlDIALOG_WIDTH" value="400"/>
<item key="org.eclipse.jdt.internal.ui.typehierarchy.HierarchyInformationControlDIALOG_HEIGHT" value="346"/>
<item key="org.eclipse.jdt.internal.ui.typehierarchy.HierarchyInformationControlDIALOG_USE_PERSISTED_SIZE" value="true"/>
<item key="org.eclipse.jdt.internal.ui.typehierarchy.HierarchyInformationControlDIALOG_USE_PERSISTED_LOCATION" value="false"/>
</section>
<section name="NewPackageWizardPage">
<item key="create_package_info_java" value="false"/>
</section>
<section name="NewEnumCreationWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="20"/>
<item key="DIALOG_Y_ORIGIN" value="20"/>
<item key="DIALOG_WIDTH" value="631"/>
<item key="DIALOG_HEIGHT" value="577"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
<section name="NewInterfaceCreationWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="948"/>
<item key="DIALOG_Y_ORIGIN" value="274"/>
<item key="DIALOG_WIDTH" value="665"/>
<item key="DIALOG_HEIGHT" value="605"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
<section name="NewRecordCreationWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="965"/>
<item key="DIALOG_Y_ORIGIN" value="247"/>
<item key="DIALOG_WIDTH" value="631"/>
<item key="DIALOG_HEIGHT" value="646"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
<section name="NewRecordWizardPage">
<item key="create_unimplemented" value="false"/>
<item key="linkWithEditor" value="false"/>
<item key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;packageExplorer group_libraries=&quot;1&quot; layout=&quot;2&quot; linkWithEditor=&quot;0&quot; rootMode=&quot;1&quot; workingSetName=&quot;Aggregate for window 1774277926242&quot;&gt;&#x0A;&lt;customFilters userDefinedPatternsEnabled=&quot;false&quot;&gt;&#x0A;&lt;xmlDefinedFilters&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.StaticsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.buildship.ui.packageexplorer.filter.gradle.buildfolder&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.mylyn.java.ui.MembersFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.m2e.MavenModuleFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.buildship.ui.packageexplorer.filter.gradle.subProject&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.DeprecatedMembersFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.FieldsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;/xmlDefinedFilters&gt;&#x0A;&lt;/customFilters&gt;&#x0A;&lt;/packageExplorer&gt;"/>
</section>
</section>

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<session version="1.0">
<refactoring comment="Delete resource &apos;lib&apos;" deleteContents="true" description="Delete resource &apos;lib&apos;" element1="/lib" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1772390182080"/>
</session>

View File

@@ -1,42 +1,2 @@
2026-03-01 17:27:17,460 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is not available. Remote download required.
2026-03-01 18:42:13,387 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-01 19:35:44,100 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-02 07:06:13,818 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-02 18:52:34,442 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-03 07:39:38,191 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-04 06:34:40,255 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-05 07:45:55,167 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-05 17:19:02,412 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-05 17:24:45,367 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-06 08:05:01,430 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-13 14:17:49,980 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-13 14:48:13,882 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-13 14:54:28,765 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-15 20:44:40,067 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-15 23:07:59,028 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-16 08:15:37,891 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-16 19:25:54,797 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-16 20:07:45,547 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-17 07:10:24,915 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-17 19:39:55,931 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-17 19:49:51,508 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-17 19:55:53,050 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-18 15:29:01,371 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-19 06:23:24,675 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-19 17:57:52,683 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-19 18:15:12,369 [Worker-5: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-19 21:54:37,068 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-19 23:00:56,635 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-20 07:44:45,034 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-20 10:34:17,517 [Worker-5: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-20 12:08:01,037 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-20 15:47:08,644 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-20 16:26:08,485 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-21 08:03:15,921 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-21 08:10:51,183 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-21 08:14:27,502 [Worker-8: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-22 08:51:09,620 [Worker-8: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2026-03-22 08:53:24,304 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-22 08:53:52,098 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-22 08:56:13,330 [Worker-5: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-22 19:48:46,352 [Worker-8: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2026-03-23 15:58:46,968 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is not available. Remote download required.
2026-03-23 15:59:14,530 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="quick_assist_proposal_size">
</section>
</section>

View File

@@ -1,26 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="NewWizardAction">
<item key="NewWizardSelectionPage.STORE_SELECTED_ID" value="org.eclipse.buildship.ui.wizard.project.creation"/>
<list key="NewWizardSelectionPage.STORE_EXPANDED_CATEGORIES_ID">
<item value="org.eclipse.buildship.ui.creationwizards"/>
</list>
<section name="NewWizard.dialogBounds">
</section>
</section>
<section name="WorkbenchPreferenceDialog.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="20"/>
<item key="DIALOG_Y_ORIGIN" value="20"/>
<item key="DIALOG_WIDTH" value="874"/>
<item key="DIALOG_HEIGHT" value="1050"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
<section name="ImportExportAction">
<item key="ImportExportPage.STORE_SELECTED_IMPORT_WIZARD_ID" value="org.eclipse.buildship.ui.wizards.project.import"/>
<list key="ImportExportPage.STORE_EXPANDED_IMPORT_CATEGORIES">
<item value="org.eclipse.buildship.ui.importwizards"/>
</list>
<section name="ImportExportWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="974"/>
<item key="DIALOG_Y_ORIGIN" value="343"/>
<item key="DIALOG_WIDTH" value="613"/>
<item key="DIALOG_HEIGHT" value="550"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu Sans|11.0|0|GTK|1|"/>
</section>
</section>
</section>

View File

@@ -1,10 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<workingSetManager>
<workingSet editPageId="org.eclipse.jdt.internal.ui.DynamicSourcesWorkingSet" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1772382436423_0" label="Java Main Sources" name="Java Main Sources"/>
<workingSet editPageId="org.eclipse.jdt.internal.ui.DynamicSourcesWorkingSet" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1772382436431_1" label="Java Test Sources" name="Java Test Sources"/>
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1772382437048_2" label="Window Working Set" name="Aggregate for window 1772382437048"/>
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1772786688998_3" label="Window Working Set" name="Aggregate for window 1772786688997"/>
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1772792014092_4" label="Window Working Set" name="Aggregate for window 1772792014092"/>
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1773603878078_5" label="Window Working Set" name="Aggregate for window 1773600542055"/>
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1774020460693_6" label="Window Working Set" name="Aggregate for window 1774020460693"/>
<workingSet editPageId="org.eclipse.jdt.internal.ui.DynamicSourcesWorkingSet" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1774277925549_0" label="Java Main Sources" name="Java Main Sources"/>
<workingSet editPageId="org.eclipse.jdt.internal.ui.DynamicSourcesWorkingSet" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1774277925560_1" label="Java Test Sources" name="Java Test Sources"/>
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1774277926242_2" label="Window Working Set" name="Aggregate for window 1774277926242"/>
</workingSetManager>

View File

@@ -1,3 +1,3 @@
#Sun Mar 22 19:48:43 CET 2026
#Mon Mar 23 15:59:12 CET 2026
org.eclipse.core.runtime=2
org.eclipse.platform=4.39.0.v20260226-0420

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1023 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

3
xxxthegame/.idea/.gitignore generated vendored
View File

@@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidProjectSystem">
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
</component>
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="21" />
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_STRING" value="-parameters -parameters" />
</component>
</project>

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
<option value="com.intellij.execution.junit.PatternConfigurationProducer" />
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>

View File

@@ -1,5 +1,6 @@
plugins {
java
eclipse
id("org.springframework.boot") version "3.5.12"
id("io.spring.dependency-management") version "1.1.7"
}

Binary file not shown.

View File

@@ -1,7 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
networkTimeout=10000
validateDistributionUrl=true
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

312
xxxthegame/gradlew vendored
View File

@@ -1,130 +1,78 @@
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
#!/usr/bin/env sh
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
MAX_FD="maximum"
warn () {
echo "$*"
} >&2
}
die () {
echo
echo "$*"
echo
exit 1
} >&2
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD=$JAVA_HOME/bin/java
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -133,120 +81,96 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
# Collect all arguments for the java command, following the shell quoting and substitution rules
if $JAVACMD --add-opens java.base/java.lang=ALL-UNNAMED -version ; then
DEFAULT_JVM_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED $DEFAULT_JVM_OPTS"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"

View File

@@ -1,22 +1,4 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -27,29 +9,25 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
if "%ERRORLEVEL%" == "0" goto init
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
@@ -57,36 +35,48 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
if exist "%JAVA_EXE%" goto init
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal

View File

@@ -8,6 +8,8 @@ import de.oaa.xxx.aufgaben.entity.ToyEntity;
import de.oaa.xxx.aufgaben.repository.AufgabeRepository;
import de.oaa.xxx.aufgaben.repository.AufgabenGruppeRepository;
import de.oaa.xxx.aufgaben.repository.ToyRepository;
import de.oaa.xxx.subscription.SubscriptionLimitService;
import de.oaa.xxx.user.UserRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity;
@@ -22,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@@ -36,13 +39,19 @@ public class AufgabeController {
private final AufgabeRepository aufgabeRepository;
private final AufgabenGruppeRepository gruppeRepository;
private final ToyRepository toyRepository;
private final UserRepository userRepository;
private final SubscriptionLimitService limitService;
public AufgabeController(AufgabeRepository aufgabeRepository,
AufgabenGruppeRepository gruppeRepository,
ToyRepository toyRepository) {
ToyRepository toyRepository,
UserRepository userRepository,
SubscriptionLimitService limitService) {
this.aufgabeRepository = aufgabeRepository;
this.gruppeRepository = gruppeRepository;
this.toyRepository = toyRepository;
this.userRepository = userRepository;
this.limitService = limitService;
}
@GetMapping("/{aufgabeId}")
@@ -53,7 +62,7 @@ public class AufgabeController {
}
@PostMapping
public ResponseEntity<Void> create(@RequestBody Aufgabe aufgabe) {
public ResponseEntity<Void> create(@RequestBody Aufgabe aufgabe, Principal principal) {
if (aufgabe.getKurzText() == null || aufgabe.getText() == null || aufgabe.getLevel() == null || aufgabe.getGruppeId() == null) {
return ResponseEntity.badRequest().build();
}
@@ -61,7 +70,10 @@ public class AufgabeController {
if (gruppeEntity == null) {
return ResponseEntity.badRequest().build();
}
if (gruppeEntity.getAufgaben().size() >= 100) {
var ownerOpt = userRepository.findByEmail(principal.getName());
int limit = ownerOpt.map(u -> limitService.maxTasksPerGroup(u.getUserId()))
.orElse(SubscriptionLimitService.STANDARD_MAX_TASKS_PER_GROUP);
if (gruppeEntity.getAufgaben().size() >= limit) {
return ResponseEntity.status(409).build();
}
List<ToyEntity> toys = resolveToys(aufgabe.getBenoetigteToys());

View File

@@ -34,6 +34,7 @@ import de.oaa.xxx.aufgaben.repository.FinisherRepository;
import de.oaa.xxx.aufgaben.repository.GruppenAboRepository;
import de.oaa.xxx.aufgaben.repository.SperreRepository;
import de.oaa.xxx.aufgaben.repository.StrafeRepository;
import de.oaa.xxx.subscription.SubscriptionLimitService;
import de.oaa.xxx.user.UserEntity;
import de.oaa.xxx.user.UserRepository;
@@ -53,6 +54,7 @@ public class AufgabenGruppeController {
private final UserRepository userRepository;
private final GruppenAboRepository aboRepository;
private final AufgabenGruppeService aufgabenGruppeService;
private final SubscriptionLimitService limitService;
public AufgabenGruppeController(AufgabenGruppeRepository gruppeRepository,
AufgabeRepository aufgabeRepository,
@@ -61,7 +63,8 @@ public class AufgabenGruppeController {
FinisherRepository finisherRepository,
UserRepository userRepository,
GruppenAboRepository aboRepository,
AufgabenGruppeService aufgabenGruppeService) {
AufgabenGruppeService aufgabenGruppeService,
SubscriptionLimitService limitService) {
this.gruppeRepository = gruppeRepository;
this.aufgabeRepository = aufgabeRepository;
this.strafeRepository = strafeRepository;
@@ -70,6 +73,7 @@ public class AufgabenGruppeController {
this.userRepository = userRepository;
this.aboRepository = aboRepository;
this.aufgabenGruppeService = aufgabenGruppeService;
this.limitService = limitService;
}
// ── Paginierte Listen ──
@@ -132,7 +136,7 @@ public class AufgabenGruppeController {
UserEntity user = resolveUser(principal);
if (user == null) return ResponseEntity.status(401).build();
if (gruppeRepository.countByUserId(user.getUserId()) >= 10) {
if (gruppeRepository.countByUserId(user.getUserId()) >= limitService.maxTaskGroups(user.getUserId())) {
return ResponseEntity.status(409).build();
}

View File

@@ -6,6 +6,7 @@ import de.oaa.xxx.aufgaben.entity.AufgabenGruppeEntity;
import de.oaa.xxx.aufgaben.entity.ToyEntity;
import de.oaa.xxx.aufgaben.repository.GruppenAboRepository;
import de.oaa.xxx.aufgaben.repository.ToyRepository;
import de.oaa.xxx.subscription.SubscriptionLimitService;
import de.oaa.xxx.user.UserEntity;
import de.oaa.xxx.user.UserRepository;
import org.slf4j.Logger;
@@ -46,13 +47,16 @@ public class ToyController {
private final ToyRepository toyRepository;
private final UserRepository userRepository;
private final GruppenAboRepository aboRepository;
private final SubscriptionLimitService limitService;
public ToyController(ToyRepository toyRepository,
UserRepository userRepository,
GruppenAboRepository aboRepository) {
GruppenAboRepository aboRepository,
SubscriptionLimitService limitService) {
this.toyRepository = toyRepository;
this.userRepository = userRepository;
this.aboRepository = aboRepository;
this.limitService = limitService;
}
@GetMapping("/list/user")
@@ -142,6 +146,11 @@ public class ToyController {
.header("X-Error", "duplicate-name")
.build();
}
if (toyRepository.countByUserId(user.getUserId()) >= limitService.maxToys(user.getUserId())) {
return ResponseEntity.status(409)
.header("X-Error", "limit-reached")
.build();
}
ToyEntity entity = ToyEntity.create(toy);
entity.setUserId(user.getUserId());
toyRepository.save(entity);

View File

@@ -16,6 +16,7 @@ public interface ToyRepository extends JpaRepository<ToyEntity, UUID> {
Page<ToyEntity> findByUserIdIsNull(Pageable pageable);
Page<ToyEntity> findByUserId(UUID userId, Pageable pageable);
long countByUserId(UUID userId);
List<ToyEntity> findByUserId(UUID userId);

View File

@@ -68,6 +68,7 @@ public class SecurityConfig {
.requestMatchers("/einladungen.html").authenticated()
.requestMatchers("/joinlock.html").authenticated()
.requestMatchers("/benachrichtigungen.html").authenticated()
.requestMatchers("/abonnements.html").authenticated()
.requestMatchers("/gruppen/**").authenticated()
.requestMatchers("/feed/**").authenticated()
.requestMatchers("/notifications/**").authenticated()

View File

@@ -2,10 +2,13 @@ package de.oaa.xxx.games.chastity.cardlock;
import de.oaa.xxx.games.chastity.tasks.Task;
import de.oaa.xxx.games.chastity.tasks.TaskMode;
import de.oaa.xxx.subscription.SubscriptionLimitService;
import de.oaa.xxx.user.UserRepository;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import de.oaa.xxx.games.chastity.timelock.TimeLockTemplateRepository;
import java.security.Principal;
import java.util.*;
import java.util.stream.Collectors;
@@ -16,11 +19,17 @@ public class CardlockTemplateController {
private final CardlockTemplateRepository templateRepository;
private final UserRepository userRepository;
private final TimeLockTemplateRepository timeLockTemplateRepository;
private final SubscriptionLimitService limitService;
public CardlockTemplateController(CardlockTemplateRepository templateRepository,
UserRepository userRepository) {
UserRepository userRepository,
TimeLockTemplateRepository timeLockTemplateRepository,
SubscriptionLimitService limitService) {
this.templateRepository = templateRepository;
this.userRepository = userRepository;
this.timeLockTemplateRepository = timeLockTemplateRepository;
this.limitService = limitService;
}
record TemplateRequest(
@@ -75,6 +84,11 @@ public class CardlockTemplateController {
if (req.cardCountsMin() == null || req.cardCountsMin().isEmpty())
return ResponseEntity.badRequest().build();
long totalTemplates = templateRepository.countByOwner(myId)
+ timeLockTemplateRepository.countByOwner(myId);
if (totalTemplates >= limitService.maxLockTemplates(myId))
return ResponseEntity.status(409).header("X-Error", "limit-reached").build();
CardlockTemplateEntity t = new CardlockTemplateEntity();
t.setOwner(myId);
applyRequest(t, req);

View File

@@ -7,4 +7,5 @@ import java.util.UUID;
public interface CardlockTemplateRepository extends JpaRepository<CardlockTemplateEntity, UUID> {
List<CardlockTemplateEntity> findByOwner(UUID owner);
long countByOwner(UUID owner);
}

View File

@@ -1,9 +1,11 @@
package de.oaa.xxx.games.chastity.timelock;
import de.oaa.xxx.games.chastity.cardlock.CardlockTemplateRepository;
import de.oaa.xxx.games.chastity.common.PenaltyType;
import de.oaa.xxx.games.chastity.spinningwheel.SpinningWheelEntry;
import de.oaa.xxx.games.chastity.tasks.Task;
import de.oaa.xxx.games.chastity.tasks.TaskMode;
import de.oaa.xxx.subscription.SubscriptionLimitService;
import de.oaa.xxx.user.UserRepository;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@@ -18,11 +20,17 @@ public class TimeLockTemplateController {
private final TimeLockTemplateRepository templateRepository;
private final UserRepository userRepository;
private final CardlockTemplateRepository cardlockTemplateRepository;
private final SubscriptionLimitService limitService;
public TimeLockTemplateController(TimeLockTemplateRepository templateRepository,
UserRepository userRepository) {
UserRepository userRepository,
CardlockTemplateRepository cardlockTemplateRepository,
SubscriptionLimitService limitService) {
this.templateRepository = templateRepository;
this.userRepository = userRepository;
this.cardlockTemplateRepository = cardlockTemplateRepository;
this.limitService = limitService;
}
record TemplateRequest(
@@ -85,6 +93,11 @@ public class TimeLockTemplateController {
if (req.name() == null || req.name().isBlank()) return ResponseEntity.badRequest().build();
if (req.maxTimeInMinutes() == null || req.maxTimeInMinutes() < 1) return ResponseEntity.badRequest().build();
long totalTemplates = templateRepository.countByOwner(myId)
+ cardlockTemplateRepository.countByOwner(myId);
if (totalTemplates >= limitService.maxLockTemplates(myId))
return ResponseEntity.status(409).header("X-Error", "limit-reached").build();
TimeLockTemplateEntity t = new TimeLockTemplateEntity();
t.setOwner(myId);
applyRequest(t, req);

View File

@@ -7,4 +7,5 @@ import java.util.UUID;
public interface TimeLockTemplateRepository extends JpaRepository<TimeLockTemplateEntity, UUID> {
List<TimeLockTemplateEntity> findByOwner(UUID owner);
long countByOwner(UUID owner);
}

View File

@@ -87,6 +87,9 @@ public class SocialController {
if (meOpt.isEmpty()) return ResponseEntity.status(401).build();
UUID myId = meOpt.get().getUserId();
if (myId.equals(body.receiverId())) {
return ResponseEntity.badRequest().build();
}
if (friendshipRepository.findExisting(myId, body.receiverId()).isPresent()) {
return ResponseEntity.status(409).build();
}

View File

@@ -0,0 +1,55 @@
package de.oaa.xxx.subscription;
import de.oaa.xxx.user.UserRepository;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.security.Principal;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
@RestController
@RequestMapping("/subscription")
public class SubscriptionController {
private final UserRepository userRepository;
private final SubscriptionLimitService limitService;
public SubscriptionController(UserRepository userRepository,
SubscriptionLimitService limitService) {
this.userRepository = userRepository;
this.limitService = limitService;
}
@GetMapping("/me")
public ResponseEntity<Map<String, Object>> getMySubscription(Principal principal) {
var meOpt = userRepository.findByEmail(principal.getName());
if (meOpt.isEmpty()) return ResponseEntity.status(401).build();
UUID userId = meOpt.get().getUserId();
Map<String, Object> result = new LinkedHashMap<>();
limitService.getActiveSubscription(userId).ifPresentOrElse(sub -> {
result.put("subscriptionType", sub.getSubscriptionType());
result.put("subscribedAt", sub.getSubscribedAt());
result.put("validUntil", sub.getValidUntil());
result.put("cancellableFrom", sub.getCancellableFrom());
}, () -> {
result.put("subscriptionType", SubscriptionType.STANDARD);
result.put("subscribedAt", null);
result.put("validUntil", null);
result.put("cancellableFrom", null);
});
result.put("limits", Map.of(
"maxLockTemplates", limitService.maxLockTemplates(userId),
"maxTaskGroups", limitService.maxTaskGroups(userId),
"maxTasksPerGroup", limitService.maxTasksPerGroup(userId),
"maxToys", limitService.maxToys(userId)
));
return ResponseEntity.ok(result);
}
}

View File

@@ -0,0 +1,64 @@
package de.oaa.xxx.subscription;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.Optional;
import java.util.UUID;
/**
* Central service for subscription-based feature limits.
* All limit constants are defined here add new resource types as needed.
*/
@Service
public class SubscriptionLimitService {
// ── Limits for STANDARD (no active subscription) ──
public static final int STANDARD_MAX_LOCK_TEMPLATES = 6;
public static final int STANDARD_MAX_TASK_GROUPS = 6;
public static final int STANDARD_MAX_TASKS_PER_GROUP = 50;
public static final int STANDARD_MAX_TOYS = 10;
private final UserSubscriptionRepository subscriptionRepository;
public SubscriptionLimitService(UserSubscriptionRepository subscriptionRepository) {
this.subscriptionRepository = subscriptionRepository;
}
/** Returns the active subscription for the user, or empty if none. */
public Optional<UserSubscriptionEntity> getActiveSubscription(UUID userId) {
return subscriptionRepository
.findTopByUserIdAndValidUntilGreaterThanEqualOrderByValidUntilDesc(userId, LocalDate.now());
}
/** True if the user has an active (non-STANDARD) subscription. */
public boolean hasActivePaidSubscription(UUID userId) {
return getActiveSubscription(userId)
.filter(s -> s.getSubscriptionType() != SubscriptionType.STANDARD)
.isPresent();
}
/** Max total lock templates (cardlock + timelock combined) allowed for this user. */
public int maxLockTemplates(UUID userId) {
if (hasActivePaidSubscription(userId)) return Integer.MAX_VALUE;
return STANDARD_MAX_LOCK_TEMPLATES;
}
/** Max task groups the user may own. */
public int maxTaskGroups(UUID userId) {
if (hasActivePaidSubscription(userId)) return Integer.MAX_VALUE;
return STANDARD_MAX_TASK_GROUPS;
}
/** Max tasks per task group. */
public int maxTasksPerGroup(UUID userId) {
if (hasActivePaidSubscription(userId)) return Integer.MAX_VALUE;
return STANDARD_MAX_TASKS_PER_GROUP;
}
/** Max individual toys the user may create. */
public int maxToys(UUID userId) {
if (hasActivePaidSubscription(userId)) return Integer.MAX_VALUE;
return STANDARD_MAX_TOYS;
}
}

View File

@@ -0,0 +1,6 @@
package de.oaa.xxx.subscription;
public enum SubscriptionType {
STANDARD,
PREMIUM
}

View File

@@ -0,0 +1,36 @@
package de.oaa.xxx.subscription;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDate;
import java.util.UUID;
@Getter
@Setter
@Entity
@Table(name = "user_subscription")
public class UserSubscriptionEntity {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
@Column(name = "subscription_id")
private UUID subscriptionId;
@Column(name = "user_id", nullable = false)
private UUID userId;
@Column(name = "subscribed_at", nullable = false)
private LocalDate subscribedAt;
@Column(name = "valid_until", nullable = false)
private LocalDate validUntil;
@Enumerated(EnumType.STRING)
@Column(name = "subscription_type", nullable = false, length = 30)
private SubscriptionType subscriptionType;
@Column(name = "cancellable_from")
private LocalDate cancellableFrom;
}

View File

@@ -0,0 +1,13 @@
package de.oaa.xxx.subscription;
import org.springframework.data.jpa.repository.JpaRepository;
import java.time.LocalDate;
import java.util.Optional;
import java.util.UUID;
public interface UserSubscriptionRepository extends JpaRepository<UserSubscriptionEntity, UUID> {
Optional<UserSubscriptionEntity> findTopByUserIdAndValidUntilGreaterThanEqualOrderByValidUntilDesc(
UUID userId, LocalDate today);
}

View File

@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/img/icon.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Abonnements XXX The Game</title>
<link rel="stylesheet" href="/css/variables.css">
<link rel="stylesheet" href="/css/style.css">
<style>
.page-hint { font-size:0.85rem; color:var(--color-muted); margin:0.25rem 0 1.5rem; }
.coming-soon {
display:flex; flex-direction:column; align-items:center; justify-content:center;
gap:1rem; padding:3rem 1rem; color:var(--color-muted); text-align:center;
}
.coming-soon .icon { font-size:3rem; }
.coming-soon h2 { font-size:1.2rem; font-weight:600; color:var(--color-text); margin:0; }
.coming-soon p { font-size:0.9rem; max-width:360px; margin:0; }
</style>
</head>
<body class="app">
<div class="main">
<div class="content">
<h1 style="margin:0 0 0.25rem;">⭐ Abonnements</h1>
<p class="page-hint">Übersicht der verfügbaren Abo-Modelle</p>
<div class="coming-soon">
<span class="icon">🚧</span>
<h2>Demnächst verfügbar</h2>
<p>Hier werden bald die verschiedenen Abo-Modelle beschrieben und abschließbar sein.</p>
</div>
</div>
</div>
<script src="/js/icons.js"></script>
<script src="/js/sidebar.js"></script>
</body>
</html>

View File

@@ -762,7 +762,8 @@
<script src="/js/shared.js"></script>
<script src="/js/card-defs.js"></script>
<script src="/js/card-display.js"></script>
<script src="/js/sidebar.js"></script>
<script src="/js/icons.js"></script>
<script src="/js/sidebar.js"></script>
<script src="/js/social-sidebar.js"></script>
<script>

View File

@@ -431,7 +431,8 @@
</div>
<script src="/js/shared.js"></script>
<script src="/js/sidebar.js"></script>
<script src="/js/icons.js"></script>
<script src="/js/sidebar.js"></script>
<script src="/js/social-sidebar.js"></script>
<script>
const params = new URLSearchParams(window.location.search);

View File

@@ -1603,6 +1603,7 @@
});
</script>
<script src="/js/sidebar.js"></script>
<script src="/js/icons.js"></script>
<script src="/js/sidebar.js"></script>
</body>
</html>

View File

@@ -14,8 +14,7 @@
border-radius: 14px;
padding: 2rem;
text-align: center;
max-width: 420px;
margin: 0 auto;
width: 100%;
}
.invite-icon { font-size: 2.5rem; margin-bottom: 1rem; }
.invite-title { font-size: 1.2rem; font-weight: 700; margin-bottom: 0.5rem; }
@@ -47,7 +46,8 @@
</div>
</div>
</div>
<script src="/js/sidebar.js"></script>
<script src="/js/icons.js"></script>
<script src="/js/sidebar.js"></script>
<script>
const params = new URLSearchParams(location.search);
const einladungId = params.get('id');

View File

@@ -8,7 +8,7 @@
<link rel="stylesheet" href="/css/variables.css">
<link rel="stylesheet" href="/css/style.css">
<style>
.game-overview { max-width: 700px; }
.game-overview { }
.overview-section { margin-bottom: 2rem; }
.overview-section h2 {
@@ -331,7 +331,8 @@
</div>
</div>
<script src="/js/sidebar.js"></script>
<script src="/js/icons.js"></script>
<script src="/js/sidebar.js"></script>
<script>
const game = JSON.parse(sessionStorage.getItem('bdsm-session-game') || 'null');
const setup = JSON.parse(sessionStorage.getItem('bdsm-session-setup') || 'null');

View File

@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta charset="UTF-8">
<link rel="icon" href="/img/icon.png" type="image/png">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Benachrichtigungen XXX The Game</title>
@@ -12,7 +12,7 @@
display: flex;
flex-direction: column;
gap: 0.5rem;
max-width: 680px;
width: 100%;
}
.notif-item {
@@ -108,7 +108,6 @@
align-items: center;
justify-content: space-between;
margin-bottom: 1.25rem;
max-width: 680px;
}
</style>
</head>
@@ -130,7 +129,8 @@
</div>
</div>
<script src="/js/sidebar.js"></script>
<script src="/js/icons.js"></script>
<script src="/js/sidebar.js"></script>
<script src="/js/social-sidebar.js"></script>
<script>
function fmtRelTime(isoStr) {

Some files were not shown because too many files have changed in this diff Show More