This repository contains the LifeQuest UI and supporting model/service modules. The inspected codebase combines:
- XAPI model interfaces and loaders for users, groups, quests, inventory, and time.
- LifeQuest planning services that materialize
LiveQuestinstances from definitions and recurrence rules. - libGDX Scene2D UI components and samples for day-planning views.
- Spock/Groovy tests and libGDX test utilities.
For humans and LLM agents:
- Read
REQUIREMENTS.mdandSTYLE-GUIDE.mdbefore changing code. - Read
ROADMAP.mdfor LifeQuest domain semantics, especially DayIndex, key splaying, materialization, and history. - Read
docs/ARCHITECTURE.mdfor module/source-set layout and LifeQuest layering. - Read
docs/TESTING.mdbefore choosing verification scope. - Read
docs/DEBUGGING.mdwhen builds, dependency resolution, libGDX threading, or model semantics fail. - LLM agents should also read
AGENTS.md.
The root topology is declared in schema.xapi. It defines virtual projects:
| Area | Purpose |
|---|---|
model/ |
XAPI model interfaces, stores, loaders, and model tests for LifeQuest data. |
wti-ui/ |
Core UI contracts, time/quest API bridges, and service implementations. |
components/ |
libGDX UI components, quest views, and sample quest app code. |
demo/ |
Demo app and legacy task-index API/tests used by current samples. |
gdx-themes/ |
libGDX theme modules and Raeleus theme variants. |
test-tools/ |
Shared test support for headless and desktop libGDX tests. |
Key docs/config:
schema.xapi— root XAPI project declaration.model/model.xapi,wti-ui/wti-ui.xapi,components/components.xapi,demo/demo.xapi,gdx-themes/gdx-themes.xapi,test-tools/test-tools.xapi— per-project module/platform declarations.settings.gradle— applies thexapi-settingsplugin and configures the XAPI plugin repository.gradle/wti-ui-versions.toml— version catalog for XAPI, libGDX, Spock, and related dependencies.- Generated
*.gradlefiles under project/source-set directories — derived Gradle topology. Useful for diagnostics, not the primary source of truth.
This repo uses .xapi schema files to describe logical modules and platform variants. The XAPI settings plugin generates Gradle projects/source sets from those schemas. For example:
wti-ui/wti-ui.xapideclares modules such asapi,time,quest,view,implQuest, andimplTime.components/components.xapideclares UI/quest/inventory components andsampleQuest.test-tools/test-tools.xapideclaresheadlessanddesktoplibGDX test-support variants.
Generated Gradle files show the concrete outcome. For example, the inspected generated file wti-ui/src/implQuest/wti-uiImplQuest.gradle maps :wti-ui-implQuest to:
wti-ui/src/implQuest/javawti-ui/src/implQuestTest/javawti-ui/src/implQuestTest/groovy- dependencies including
:model-implQuest,:wti-ui-quest,:wti-ui-implTime, Spock, and XAPI model JRE.
Treat .xapi as the authoritative topology. Treat generated Gradle files as diagnostic output when you need the exact Gradle project path, source directories, or dependency expansion.
build/xindex is a generated machine-oriented index. Prefer targeted lookup when the module is known; do not broad-search the whole tree first.
- Path-side lookup pattern:
build/xindex/path/_<project>/<module-or-platform-module>/... - Concrete inspected example:
build/xindex/path/_components/inventory/sources - That
sourcesfile contained/opt/wti-ui/components/src/inventory. - Coordinate-side lookup pattern, when present:
build/xindex/coord/<group>/<project-module>/...;build/xindex/coord/net.wti/components-inventorywas discoverable here, but no child files were visible through workspace tools.
Use build/xindex for fast generated lookup, .xapi files for authoritative topology, and generated Gradle files for concrete Gradle project/source-set/dependency output. See docs/ARCHITECTURE.md and AGENTS.md for the fuller workflow.
From REQUIREMENTS.md and STYLE-GUIDE.md:
- Java code must remain Java 8 compatible.
- Tests should be Spock + Groovy unless explicitly requested otherwise.
- Views must remain pure with respect to persistence and data loading: no direct store/network calls inside view classes.
- Scene2D mutation, Skin/atlas/font loading, and layout must happen on the libGDX render thread for real backends.
- Prefer headless tests for logic; use desktop LWJGL3 tests only when a real GL context is required.
- Keep changes minimal and localized; avoid drive-by refactors.
Observed configuration:
- Gradle wrapper version is configured as
8.11.1inbuild.gradle. - Java toolchain is generated as Java 8 in inspected generated Gradle files.
settings.gradleappliesxapi-settingsversion0.5.1and looks for an XAPI local Maven repository.- If
xapiRepois not provided,settings.gradledefaults to$rootDir.parent/xapi/repoand logs that fallback. gradle.propertiessetsxapiVersion=0.5.1,gdxVersion=2.13.2-SNAPSHOT, Quarkus plugin3.6.8,org.gradle.jvmargs=-Xms256m -Xmx3g, andforceRegen=true.- The version catalog defines Spock
2.3-groovy-4.0and libGDX dependencies.
These are suggestions only; they were not run while creating these docs.
./gradlew :wti-ui-implTime:test
./gradlew :wti-ui-implQuest:test
./gradlew :components-implQuest:test
./gradlew :demo-api:test
./gradlew :test-tools-headless:test
./gradlew :test-tools-desktop:testChoose the smallest command that covers your change. See docs/TESTING.md for guidance.