Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
abf556e
Experiment with quarkus-web-bundler
MikeEdgar Feb 13, 2026
138bc66
Initialize AGENTS.md files
MikeEdgar Mar 23, 2026
db69552
Add Web Components + Lit POC
MikeEdgar Mar 25, 2026
d957c7b
Add listing for Kafka Connect clusters and connectors
MikeEdgar Mar 25, 2026
c630b0a
PF6 migration, experimentation
MikeEdgar Mar 26, 2026
ee652e2
Add initial React POC without Next.js
MikeEdgar Mar 27, 2026
02b07dc
React POC: cluster switcher and improve topic listing and details
MikeEdgar Mar 27, 2026
c7a98b0
React POC: add UIs for nodes, rebalances, and groups
MikeEdgar Mar 27, 2026
6fe15a5
React POC: add UI for Kafka Connect
MikeEdgar Mar 30, 2026
a953b9e
React POC: Authentication security evaluation and plan
MikeEdgar Mar 30, 2026
2b8e0ef
Move React POC to Quarkus Quinoa, remove poc-lit and Quarkus web bundler
MikeEdgar Apr 6, 2026
57e3c5b
Add users list/details, fixes for React app via Quarkus Quinoa, fix s…
MikeEdgar Apr 6, 2026
ebfef86
Add node configuration page
MikeEdgar Apr 7, 2026
0fe1d13
Fix Kafka Connect breadcrumbs
MikeEdgar Apr 7, 2026
5178303
Fix users table upper pagination control
MikeEdgar Apr 7, 2026
f6dfca1
Update NPM dependencies
MikeEdgar Apr 7, 2026
2593cb6
Migrate cluster overview page from Next.js application
MikeEdgar Apr 7, 2026
dfda0b9
Fix recent topics functionality
MikeEdgar Apr 8, 2026
59920f4
Add list title labels for topic and node statuses
MikeEdgar Apr 8, 2026
724764b
Add migration plan for group offset reset functionality
MikeEdgar Apr 8, 2026
2b1b304
Initial migration of group offset reset functionality
MikeEdgar Apr 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .bob/rules-advance/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Advance Mode Rules (Non-Obvious Only)

## Java Coding Rules

**Locale-specific string operations are enforced:**
- NEVER use `.toLowerCase()` or `.toUpperCase()` without `Locale.ROOT` parameter
- Checkstyle regex check will fail build: `\.to(Lower|Upper)Case\(\)`
- Example: `string.toLowerCase(Locale.ROOT)` not `string.toLowerCase()`

**No @author tags allowed:**
- Project policy: `@author` tags in Javadoc are forbidden (hard to maintain)
- See api/CONTRIBUTING.md

**Dependency injection pattern:**
- Use `@Inject` for field injection (Sonar rule java:S6813 is ignored project-wide)
- Services are `@ApplicationScoped`, utilities are `@Singleton`

## UI Coding Rules

**PatternFly transpilation required:**
- All `@patternfly/*` packages MUST be listed in `next.config.js` `transpilePackages`
- Missing packages will cause build failures

**Middleware authentication bypass:**
- `/api/schema` endpoint bypasses OIDC when both `content` and `schemaname` query params present
- See `ui/middleware.ts:60-71` for implementation

**Next.js standalone output:**
- UI uses `output: "standalone"` in next.config.js
- Required for container deployment

## Testing

**Single test execution:**
```bash
mvn clean verify -Dit.test=ClassName#methodName
```

**Remote debugging:**
```bash
mvn clean verify -Ddebug=5005
```

**System tests use @TestBucket:**
- Resources shared across tests in same bucket
- See `systemtests/src/main/java/com/github/streamshub/systemtests/interfaces/TestBucketExtension.java`

## Browser & MCP Tools Available

This mode has access to browser automation and MCP tools for enhanced capabilities.
50 changes: 50 additions & 0 deletions .bob/rules-ask/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Ask Mode Rules (Non-Obvious Only)

## Project Structure Context

**Multi-module Maven project:**
- `common/` - Shared configuration models (not source code)
- `api/` - Quarkus REST API backend (Java 21)
- `operator/` - Kubernetes operator (Quarkus Operator SDK)
- `ui/` - Next.js 14 frontend with PatternFly
- `systemtests/` - Integration tests with custom @TestBucket pattern

**UI architecture:**
- Next.js 14 with standalone output mode
- PatternFly components require explicit transpilation in next.config.js
- Middleware handles OIDC authentication with special bypass for `/api/schema`

## Testing Documentation

**System tests use @TestBucket annotation:**
- Non-standard pattern for resource grouping
- Resources created once per bucket, shared across tests
- Tests in same bucket run together (randomized order between buckets)
- Implementation: `systemtests/src/main/java/com/github/streamshub/systemtests/interfaces/TestBucketExtension.java`

**Test execution patterns:**
- Single test: `mvn clean verify -Dit.test=ClassName#methodName`
- Remote debugging: `mvn clean verify -Ddebug=5005`
- UI tests: `cd ui && npm run build && npm run test`

## Code Style Context

**Checkstyle enforces locale-specific operations:**
- Regex check prevents `.toLowerCase()` or `.toUpperCase()` without Locale parameter
- Must use `Locale.ROOT` parameter
- See `.checkstyle/checkstyle.xml:77-81`

**Project policies:**
- No `@author` tags in Javadoc (maintenance burden)
- Field injection via `@Inject` is standard (Sonar S6813 ignored)

## Architecture Context

**Operator uses dependent resource workflow:**
- `@Workflow` annotation with `@Dependent` resources
- Declares creation order and preconditions
- See `operator/src/main/java/com/github/streamshub/console/ConsoleReconciler.java`

**Container versioning:**
- Makefile converts SNAPSHOT to lowercase for container tags
- Example: `0.12.1-SNAPSHOT` → `0.12.1-snapshot`
46 changes: 46 additions & 0 deletions .bob/rules-code/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Code Mode Rules (Non-Obvious Only)

## Java Coding Rules

**Locale-specific string operations are enforced:**
- NEVER use `.toLowerCase()` or `.toUpperCase()` without `Locale.ROOT` parameter
- Checkstyle regex check will fail build: `\.to(Lower|Upper)Case\(\)`
- Example: `string.toLowerCase(Locale.ROOT)` not `string.toLowerCase()`

**No @author tags allowed:**
- Project policy: `@author` tags in Javadoc are forbidden (hard to maintain)
- See api/CONTRIBUTING.md

**Dependency injection pattern:**
- Use `@Inject` for field injection (Sonar rule java:S6813 is ignored project-wide)
- Services are `@ApplicationScoped`, utilities are `@Singleton`

## UI Coding Rules

**PatternFly transpilation required:**
- All `@patternfly/*` packages MUST be listed in `next.config.js` `transpilePackages`
- Missing packages will cause build failures

**Middleware authentication bypass:**
- `/api/schema` endpoint bypasses OIDC when both `content` and `schemaname` query params present
- See `ui/middleware.ts:60-71` for implementation

**Next.js standalone output:**
- UI uses `output: "standalone"` in next.config.js
- Required for container deployment

## Testing

**Single test execution:**
```bash
mvn clean verify -Dit.test=ClassName#methodName
```

**Remote debugging:**
```bash
mvn clean verify -Ddebug=5005
```

**System tests use @TestBucket:**
- Resources shared across tests in same bucket
- See `systemtests/src/main/java/com/github/streamshub/systemtests/interfaces/TestBucketExtension.java`
60 changes: 60 additions & 0 deletions .bob/rules-plan/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Plan Mode Rules (Non-Obvious Only)

## Architecture Constraints

**Multi-module Maven structure:**
- `common/` - Shared config models (dependency for api/operator)
- `api/` - Quarkus REST API (Java 21, depends on common)
- `operator/` - Kubernetes operator (Quarkus Operator SDK, depends on common)
- `ui/` - Next.js 14 frontend (standalone, separate build)
- `systemtests/` - Integration tests (requires Docker 2GB+ RAM)

**Operator dependent resource workflow:**
- Uses `@Workflow` with `@Dependent` annotations
- Resources have explicit creation order via `dependsOn`
- Preconditions control when resources are created
- Example: Prometheus resources only created when metrics source is "private"
- See `operator/src/main/java/com/github/streamshub/console/ConsoleReconciler.java`

**UI architecture constraints:**
- Next.js standalone output mode (required for containerization)
- PatternFly packages MUST be transpiled (listed in next.config.js)
- Middleware handles OIDC with special `/api/schema` bypass
- Cannot use standard localStorage or browser APIs (webview restrictions)

## Testing Architecture

**System tests use @TestBucket pattern:**
- Custom extension for resource grouping
- Resources created once per bucket, shared across tests
- Tests in same bucket run together (randomized between buckets)
- Reduces test setup overhead significantly
- Implementation: `systemtests/src/main/java/com/github/streamshub/systemtests/interfaces/TestBucketExtension.java`

**Test lifecycle:**
- `AbstractST` provides `@BeforeAll` for operator setup
- `@BeforeEach` checks cluster health before each test
- Requires Kubernetes cluster with Strimzi operator

## Build Constraints

**Container image versioning:**
- Makefile converts Maven SNAPSHOT to lowercase for container tags
- Example: `0.12.1-SNAPSHOT``0.12.1-snapshot`
- Required for container registry compatibility

**Local development:**
- Requires `console-config.yaml` in project root for compose
- UI and API run as separate containers
- See `compose.yaml` and `examples/console-config.yaml`

## Code Style Constraints

**Checkstyle enforces locale-specific operations:**
- Regex prevents `.toLowerCase()` or `.toUpperCase()` without Locale
- Must use `Locale.ROOT` parameter
- Build will fail if violated

**Project policies:**
- No `@author` tags in Javadoc
- Field injection via `@Inject` is standard pattern
94 changes: 94 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# AGENTS.md

This file provides guidance to agents when working with code in this repository.

## Build & Test Commands

**Single test execution (API/Operator):**
```bash
mvn clean verify -Dit.test=ClassName#methodName
```

**Remote debugging tests:**
```bash
mvn clean verify -Ddebug=5005
```
Attach debugger to port 5005 after test breakpoint is hit.

**UI development (with hot-reload):**
```bash
cd api && mvn quarkus:dev
```
This starts both the Quarkus API and the React UI with hot-reload enabled. Quinoa runs a Node server in the background and proxies UI resource requests.

**UI tests:**
```bash
cd api/src/main/webui && npm test
```

**UI standalone development (optional):**
```bash
cd api/src/main/webui && npm run dev
```
Note: API must be running separately on `http://localhost:8080` for this to work.

## Code Style (Non-Obvious)

**Java - Checkstyle enforces locale-specific string operations:**
- NEVER use `.toLowerCase()` or `.toUpperCase()` without Locale parameter
- Use `.toLowerCase(Locale.ROOT)` or `.toUpperCase(Locale.ROOT)`
- Checkstyle will fail build if violated

**Java - No @author tags:**
Project policy disallows `@author` in Javadoc (hard to maintain).

**UI - PatternFly packages optimization:**
`vite.config.ts` includes PatternFly packages in `optimizeDeps` for proper bundling and performance.

**UI - PatternFly version:**
- Project uses PatternFly v6 (check `api/src/main/webui/package.json` for exact version)
- Always verify PatternFly component APIs match v6 documentation
- Avoid version-specific class names or props when possible
- Reference existing components in codebase for correct usage patterns

## Testing Patterns

**System tests use @TestBucket annotation:**
- Groups tests sharing resources (e.g., `@TestBucket(VARIOUS_TOPIC_TYPES_BUCKET)`)
- Resources created once per bucket, not per test
- Tests in same bucket run together (randomized order between buckets)
- See `systemtests/src/main/java/com/github/streamshub/systemtests/interfaces/TestBucketExtension.java`

**Test lifecycle:**
- `AbstractST` base class provides `@BeforeAll` setup for operators
- `@BeforeEach` checks cluster health before each test
- System tests require Docker with 2GB+ RAM

## Architecture Notes

**Multi-module Maven project:**
- `common/` - Shared config models
- `api/` - Quarkus REST API (Java 21) with integrated React UI via Quinoa
- `api/src/main/webui/` - React 18 + Vite frontend (PatternFly React components)
- `operator/` - Kubernetes operator (Quarkus Operator SDK)
- `systemtests/` - Integration tests

**UI Architecture:**
- Built with React 18, TypeScript, and Vite
- Integrated into Quarkus via Quinoa extension
- Uses PatternFly React components for UI
- TanStack Query for API state management
- React Router v6 for client-side routing
- i18next for internationalization

**Operator uses dependent resource workflow:**
Reconciler declares dependencies via `@Workflow` with `@Dependent` annotations defining resource creation order and preconditions.

**Container image versioning:**
Makefile converts Maven SNAPSHOT versions to lowercase for container tags (e.g., `0.12.1-SNAPSHOT` → `0.12.1-snapshot`).

**Quinoa Integration:**
- UI build is automatically triggered during Maven build (`mvn clean install`)
- During development (`mvn quarkus:dev`), Quinoa runs a Node server for hot-reload
- UI resources are served by the Quarkus API at runtime
- No separate UI container needed for deployment
Loading
Loading