# jEngine Architectural Roadmap (AI-Ready)
This document contains discrete, bite-sized modules for the evolution of jEngine. Each section is designed to be used as a standalone prompt for an AI agent.
---
## Module 3: Professional UI Layout Engine
**Context:** UI layout is currently manual and brittle. Developers calculating pixel offsets leads to messy code.
**Task:**
1. **Aesthetics:** Update `BorderStyle` in `src/ui/mod.rs` to use Unicode box-drawing characters: `┌ ┐ └ ┘ ─ │` and `╔ ╗ ╚ ╝ ═ ║`.
2. **Layout Logic:** In `src/ui/widgets.rs`, implement `VStack` and `HStack` containers.
3. Implement `Alignment` (Start, Center, End) and `Padding`.
4. Use the "Intrinsic Width" helper from Module 1 to calculate child positions.
**Information:**
* This should be an **Immediate Mode** layout: calculate positions on the fly during the draw call.
**DO NOT:**
* Implement a complex Retained Mode UI. Keep it simple and functional.
**Verification:**
* Draw a centered menu with multiple lines of varying font sizes using only declarative layout calls.
---
## Module 4: The "Glass Box" Debug Inspector
**Context:** Development is currently "blind." We need a toggleable overlay to see engine vitals and ECS state.
**Task:**
1. Implement a `DebugInspector` toggleable via `F1`.
2. Show Live FPS, Frame-time, and a searchable list of all entities in the `World`.
3. Overlay `geometry.rs` shapes (AABBs, Circles) as wireframe quads on top of sprites.
4. For debug inspector to be available, the game has to be ran with --debug option
**Verification:**
* Press `F1` and verify you can see the entity count change as particles spawn and die.
---
## Module 5: Post-Processing Stack
**Context:** The `ScanlinePass` is currently a hardcoded single effect. We need a modular stack for "Juice."
**Task:**
1. Refactor `ScanlinePass` into a generic `PostProcessEffect` trait.
2. Implement a `PostProcessStack` in `Renderer` that can chain effects like **Vignette**, **Bloom**, and **Chromatic Aberration**.
**Verification:**
* Toggle scanlines, vignette, and bloom independently in a test scene.