Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b36e51c443
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
Implements a cross-platform “config plugin” that provides runtime configuration management backed by gRPC (snapshots/default sync) and NATS (change notifications), with separate entrypoints for Velocity and Paper plus an example consumer plugin.
Changes:
- Added
commonruntime config library (definitions/bindings, gRPC client, NATS listener, environment configuration). - Added Paper and Velocity plugin entrypoints that boot
ConfigManagerand register gRPC providers. - Added an example Paper plugin demonstrating registration, reads, and live updates; plus DevSpace/Gradle scaffolding and Gradle wrapper files.
Reviewed changes
Copilot reviewed 26 out of 29 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
velocity/src/main/kotlin/gg/grounds/config/ConfigVelocityPlugin.kt |
Velocity plugin entrypoint that starts ConfigManager on proxy init/shutdown. |
velocity/devspace.yaml |
DevSpace config for iterating on the Velocity deployment in-cluster. |
velocity/build.gradle.kts |
Velocity module build config + gRPC deps. |
settings.gradle.kts |
Includes modules and configures plugin management repositories. |
paper/src/main/resources/plugin.yml |
Paper plugin descriptor for plugin-config. |
paper/src/main/kotlin/gg/grounds/config/ConfigPaperPlugin.kt |
Paper plugin entrypoint that starts ConfigManager and registers it as a Bukkit service. |
paper/devspace.yaml |
DevSpace config for iterating on the Paper deployment in-cluster. |
paper/build.gradle.kts |
Paper module build config + gRPC deps. |
gradlew.bat |
Gradle wrapper script for Windows. |
gradlew |
Gradle wrapper script for POSIX. |
gradle/wrapper/gradle-wrapper.properties |
Wrapper distribution configuration. |
gradle/wrapper/gradle-wrapper.jar |
Wrapper runtime jar. |
example/src/main/resources/plugin.yml |
Example plugin descriptor that depends on plugin-config. |
example/src/main/kotlin/gg/grounds/config/example/ExamplePaperPlugin.kt |
Example consumer plugin showing registration/get/onChange usage. |
example/src/main/kotlin/gg/grounds/config/example/ExampleConfigDefinitions.kt |
Sample typed config definitions + payload classes used by the example plugin. |
example/devspace.yaml |
DevSpace config for iterating on the example plugin in-cluster. |
example/build.gradle.kts |
Example module build config. |
common/src/main/kotlin/gg/grounds/config/nats/NatsConfigListener.kt |
Shared NATS listener handling subscriptions per (app, env) with reconnect backoff. |
common/src/main/kotlin/gg/grounds/config/grpc/GrpcConfigClient.kt |
Shared gRPC blocking client wrapper for config service calls. |
common/src/main/kotlin/gg/grounds/config/grpc/BaseGrpcClient.kt |
Shared gRPC channel lifecycle utilities. |
common/src/main/kotlin/gg/grounds/config/EnvironmentConfig.kt |
Reads required infra endpoints from environment variables. |
common/src/main/kotlin/gg/grounds/config/ConfigSnapshot.kt |
Snapshot/key model types for versioned config documents. |
common/src/main/kotlin/gg/grounds/config/ConfigManager.kt |
Core manager for registration, default syncing, snapshot loading, and live updates. |
common/src/main/kotlin/gg/grounds/config/ConfigDefinitionNotRegisteredException.kt |
Fail-fast exception for unregistered definition usage. |
common/src/main/kotlin/gg/grounds/config/ConfigDefinition.kt |
Base type for typed config document definitions. |
common/src/main/kotlin/gg/grounds/config/ConfigBinding.kt |
Internal binding holder managing current value + callbacks. |
common/build.gradle.kts |
Common module build config + deps (NATS, Jackson, gRPC contracts). |
build.gradle.kts |
Root build plugin configuration. |
.gitignore |
Repo ignore rules for build tooling and local artifacts. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
a4fd207 to
3db23ec
Compare
3db23ec to
0ae0644
Compare
Code Review: plugin-configFehler & Probleme1. Race Condition beim Bootstrap
Fix: Zuerst subscriben, dann Snapshot laden. Doppelte Events sind harmlos (Version-Check filtert). 2. Executor-Leak in ConfigScopeSynchronizer Der 3. Keine Retry-Logik bei gRPC-Fehlern
4. Wenn zwei Plugins denselben ConfigManager-Provider nutzen und einer 5. Keine Tests Keine Tests vorhanden. Empfehlung: Unit-Tests für ConfigBinding, ConfigScopeRegistry, und Integration-Tests für den Sync-Flow. Sicherheit
Ideen
|
68997c3 to
19ed72d
Compare
Code ReviewVerdict: Request changes — solide Struktur und überraschend ernstzunehmende Testabdeckung, aber drei echte Korrektheits-Probleme und ein Credential-Sharp-Edge im Build. 🚨 Blockers
|
35b01b6 to
d9aa6b9
Compare
d9aa6b9 to
4235d83
Compare
Pull Request
Description
Type of Change
Related Issues
None
Testing
Checklist