Some checks failed
🚀 Build & Deploy Image / Determine Build Necessity (push) Failing after 10m14s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Has been skipped
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
Security Vulnerability Scan / Check for Dependency Changes (push) Failing after 11m25s
Security Vulnerability Scan / Composer Security Audit (push) Has been cancelled
- Remove middleware reference from Gitea Traefik labels (caused routing issues) - Optimize Gitea connection pool settings (MAX_IDLE_CONNS=30, authentication_timeout=180s) - Add explicit service reference in Traefik labels - Fix intermittent 504 timeouts by improving PostgreSQL connection handling Fixes Gitea unreachability via git.michaelschiemer.de
586 lines
16 KiB
Markdown
586 lines
16 KiB
Markdown
# Console Template System & ConsoleResponse - Implementation Plan
|
|
|
|
## 📋 Übersicht
|
|
|
|
Implementierung eines Template-Systems für Console-Ausgaben mit `ConsoleResponse` Value Objects, das nahtlos mit dem bestehenden attribute-basierten Command-System arbeitet.
|
|
|
|
---
|
|
|
|
## 🎯 Phase 1: ConsoleResponse Foundation (Woche 1)
|
|
|
|
### 1.1 Core Interfaces & Base Classes
|
|
|
|
**Ziel**: Framework-compliant Response-Architektur
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleResponse` Interface erstellen
|
|
- `getExitCode(): ExitCode`
|
|
- `render(ConsoleOutputInterface $output): void`
|
|
- `getData(): array`
|
|
|
|
- [ ] `AbstractConsoleResponse` Base Class
|
|
- Readonly class mit gemeinsamer Logik
|
|
- Constructor mit ExitCode und Data
|
|
- Gemeinsame Methoden-Implementierung
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/Response/ConsoleResponse.php`
|
|
- `src/Framework/Console/Response/AbstractConsoleResponse.php`
|
|
|
|
### 1.2 Response Type Implementations
|
|
|
|
**Ziel**: 6 konkrete Response-Typen für verschiedene Use Cases
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleTextResponse` - Simple Text-Ausgabe
|
|
- Factory Methods: `success()`, `error()`, `warning()`, `info()`
|
|
- Support für ConsoleStyle
|
|
- Readonly Value Object
|
|
|
|
- [ ] `ConsoleTableResponse` - Table-basierte Ausgabe
|
|
- Wiederverwendung der bestehenden `Table` Klasse
|
|
- Optional: Title Support
|
|
- Headers und Rows als Constructor-Parameter
|
|
|
|
- [ ] `ConsoleTemplateResponse` - Template-basierte Ausgabe
|
|
- Template Name + Data
|
|
- Integration mit ConsoleTemplateEngine (Phase 2)
|
|
- Lazy Loading von Template
|
|
|
|
- [ ] `ConsoleLayoutResponse` - Component-basierte Ausgabe
|
|
- ConsoleLayout als Parameter
|
|
- Wiederverwendung von Layout-System
|
|
- Multi-Component Rendering
|
|
|
|
- [ ] `ConsoleMenuResponse` - Interactive Menu
|
|
- Wiederverwendung von `InteractiveMenu`
|
|
- Items, Title, Interactive-Flag
|
|
- Selected Value in Data speichern
|
|
|
|
- [ ] `ConsoleCompositeResponse` - Mehrere Responses kombinieren
|
|
- Array von ConsoleResponse
|
|
- Sequential Rendering
|
|
- Exit Code Aggregation (schlechtester gewinnt)
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/Response/ConsoleTextResponse.php`
|
|
- `src/Framework/Console/Response/ConsoleTableResponse.php`
|
|
- `src/Framework/Console/Response/ConsoleTemplateResponse.php`
|
|
- `src/Framework/Console/Response/ConsoleLayoutResponse.php`
|
|
- `src/Framework/Console/Response/ConsoleMenuResponse.php`
|
|
- `src/Framework/Console/Response/ConsoleCompositeResponse.php`
|
|
|
|
### 1.3 Response Builder (Fluent API)
|
|
|
|
**Ziel**: Einfache Erstellung komplexer Responses
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleResponseBuilder` implementieren
|
|
- `addText(string, ?ConsoleStyle): self`
|
|
- `addTable(array, array, ?string): self`
|
|
- `addTemplate(string, array): self`
|
|
- `addDivider(): self`
|
|
- `addNewLine(int): self`
|
|
- `withExitCode(ExitCode): self`
|
|
- `withData(array): self`
|
|
- `build(): ConsoleResponse`
|
|
|
|
**Features**:
|
|
- Fluent Interface
|
|
- Auto-Composite wenn mehrere Sections
|
|
- Single Response wenn nur eine Section
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/Response/ConsoleResponseBuilder.php`
|
|
|
|
### 1.4 Console Application Integration
|
|
|
|
**Ziel**: Support für ExitCode UND ConsoleResponse Return-Typen
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleApplication` erweitern für beide Return-Typen
|
|
- Pattern Matching für `ExitCode|ConsoleResponse|int`
|
|
- `handleResponse(ConsoleResponse): int` Methode
|
|
- Backward Compatibility sicherstellen
|
|
|
|
- [ ] Method Signature Patterns dokumentieren
|
|
- Pattern A: `ConsoleResponse` only (Recommended)
|
|
- Pattern B: `ExitCode` only (Legacy)
|
|
- Pattern C: Both (Transition)
|
|
- Pattern D: Union Type (Flexible)
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/ConsoleApplication.php` (Update)
|
|
|
|
### 1.5 Tests Phase 1
|
|
|
|
**Ziel**: ≥80% Test Coverage für Response-System
|
|
|
|
**Tasks**:
|
|
- [ ] Unit Tests für alle Response-Typen
|
|
- Constructor-Validierung
|
|
- Rendering-Logik
|
|
- Factory Methods
|
|
- getData() und getExitCode()
|
|
|
|
- [ ] Integration Tests
|
|
- ConsoleApplication mit verschiedenen Return-Typen
|
|
- ConsoleResponseBuilder Workflows
|
|
- Composite Response mit mehreren Sections
|
|
|
|
- [ ] Example Commands
|
|
- Beispiel für jede Response-Type
|
|
- Migration-Guide-Examples
|
|
|
|
**Files**:
|
|
- `tests/Unit/Console/Response/*Test.php`
|
|
- `tests/Feature/Console/ResponseIntegrationTest.php`
|
|
|
|
**Deliverables Phase 1**:
|
|
- ✅ ConsoleResponse Interface & 6 Typen
|
|
- ✅ ConsoleResponseBuilder Fluent API
|
|
- ✅ Backward-Compatible Console Application
|
|
- ✅ Comprehensive Test Suite
|
|
- ✅ Documentation & Examples
|
|
|
|
---
|
|
|
|
## 🎨 Phase 2: Console Template System (Woche 2)
|
|
|
|
### 2.1 String-Based Template Processors
|
|
|
|
**Ziel**: Template-Verarbeitung ähnlich wie HTML-Template-System
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleTemplateProcessor` Interface
|
|
- `process(string $template, array $data): string`
|
|
- String-basiert (nicht DOM!)
|
|
|
|
- [ ] `ConsolePlaceholderProcessor`
|
|
- `{{ variable }}` - Escaped Output
|
|
- `{{{ raw }}}` - Raw Output (für ANSI codes)
|
|
- `{{ object.property }}` - Dot-Notation
|
|
- `{{ function() }}` - Function Calls
|
|
- Ähnlich wie `PlaceholderReplacer` aus View-System
|
|
|
|
- [ ] `ConsoleForProcessor`
|
|
- `<for items="..." as="...">` Syntax
|
|
- String-basiertes Loop-Processing
|
|
- Nested Loop Support
|
|
- Dot-Notation für Items-Path
|
|
|
|
- [ ] `ConsoleIfProcessor` (Optional)
|
|
- `<if condition="...">` Syntax
|
|
- Simple Conditional Logic
|
|
- `<else>` Support
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/Template/ConsoleTemplateProcessor.php`
|
|
- `src/Framework/Console/Template/Processors/ConsolePlaceholderProcessor.php`
|
|
- `src/Framework/Console/Template/Processors/ConsoleForProcessor.php`
|
|
- `src/Framework/Console/Template/Processors/ConsoleIfProcessor.php`
|
|
|
|
### 2.2 Template Engine & Loader
|
|
|
|
**Ziel**: Unified Template Processing Pipeline
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleTemplateEngine` implementieren
|
|
- Processor Pipeline (ähnlich wie View\Engine)
|
|
- Sequential Processing
|
|
- Processor Registry
|
|
- Error Handling
|
|
|
|
- [ ] `ConsoleTemplateLoader`
|
|
- Template-Files laden aus `/templates/console/`
|
|
- File Extension: `.console.txt` oder `.console.tpl`
|
|
- Template Caching (optional)
|
|
- Template Not Found Exception
|
|
|
|
- [ ] Template Syntax Documentation
|
|
- Placeholder Syntax
|
|
- Component Tags
|
|
- Loop Syntax
|
|
- Examples
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/Template/ConsoleTemplateEngine.php`
|
|
- `src/Framework/Console/Template/Loading/ConsoleTemplateLoader.php`
|
|
- `docs/console-template-syntax.md`
|
|
|
|
### 2.3 Console Component Tags
|
|
|
|
**Ziel**: `<console:table>`, `<console:box>` etc. in Templates
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleComponentTagProcessor` implementieren
|
|
- Parse `<console:*>` Tags
|
|
- Extract Attributes
|
|
- Extract Content
|
|
- Render via Component Registry
|
|
|
|
- [ ] `ConsoleComponentRegistry`
|
|
- Registry für Component-Mapping
|
|
- `table` → TableAdapter
|
|
- `box` → TextBoxAdapter
|
|
- `menu` → MenuAdapter
|
|
- `progress` → ProgressBarAdapter
|
|
|
|
- [ ] Console Component Adapters (Template-friendly)
|
|
- `ConsoleTableComponent`
|
|
- `ConsoleBoxComponent`
|
|
- `ConsoleMenuComponent`
|
|
- `ConsoleProgressComponent`
|
|
|
|
**Features**:
|
|
- Template Tag: `<console:table headers="A,B,C">...</console:table>`
|
|
- Nested Content Processing (für Loops in Attributen)
|
|
- Attribute Parsing
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/Template/Processors/ConsoleComponentTagProcessor.php`
|
|
- `src/Framework/Console/Template/Components/ConsoleComponentRegistry.php`
|
|
- `src/Framework/Console/Template/Components/ConsoleTableComponent.php`
|
|
- `src/Framework/Console/Template/Components/ConsoleBoxComponent.php`
|
|
|
|
### 2.4 Template Response Integration
|
|
|
|
**Ziel**: ConsoleTemplateResponse nutzt Template-System
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleTemplateResponse` finalisieren
|
|
- Integration mit ConsoleTemplateEngine
|
|
- Template Loading
|
|
- Data Binding
|
|
- Error Handling
|
|
|
|
- [ ] Template Examples erstellen
|
|
- `migration-status.console.txt`
|
|
- `user-list.console.txt`
|
|
- `health-check.console.txt`
|
|
- `system-status.console.txt`
|
|
|
|
**Files**:
|
|
- `templates/console/migration-status.console.txt`
|
|
- `templates/console/user-list.console.txt`
|
|
- `templates/console/health-check.console.txt`
|
|
|
|
### 2.5 Tests Phase 2
|
|
|
|
**Ziel**: Template-System vollständig getestet
|
|
|
|
**Tasks**:
|
|
- [ ] Processor Tests
|
|
- PlaceholderProcessor mit verschiedenen Syntaxen
|
|
- ForProcessor mit Nested Loops
|
|
- ComponentTagProcessor mit allen Tags
|
|
|
|
- [ ] Integration Tests
|
|
- ConsoleTemplateEngine mit kompletten Templates
|
|
- ConsoleTemplateResponse Rendering
|
|
- Error Cases (Template Not Found, Parse Errors)
|
|
|
|
- [ ] Template Examples Tests
|
|
- Alle Template-Files rendern korrekt
|
|
- Data-Binding funktioniert
|
|
- Component Tags werden ersetzt
|
|
|
|
**Files**:
|
|
- `tests/Unit/Console/Template/*Test.php`
|
|
- `tests/Feature/Console/TemplateRenderingTest.php`
|
|
|
|
**Deliverables Phase 2**:
|
|
- ✅ String-based Template Processing System
|
|
- ✅ ConsoleTemplateEngine mit Processor Pipeline
|
|
- ✅ Console Component Tags Support
|
|
- ✅ Template Loader mit Caching
|
|
- ✅ Template Examples & Documentation
|
|
- ✅ Comprehensive Tests
|
|
|
|
---
|
|
|
|
## 🏗️ Phase 3: Component-Based Layout System (Woche 3) - OPTIONAL
|
|
|
|
### 3.1 ConsoleComponent Interface & Adapters
|
|
|
|
**Ziel**: Unified Interface für bestehende Console-Components
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleComponent` Interface
|
|
- `render(ConsoleOutputInterface $output): void`
|
|
- Standard-Interface für alle Components
|
|
|
|
- [ ] Adapters für bestehende Components
|
|
- `TableAdapter` - Wrapper für mutable `Table`
|
|
- `TextBoxAdapter` - Wrapper für readonly `TextBox`
|
|
- `MenuAdapter` - Wrapper für `InteractiveMenu`
|
|
- `ProgressBarAdapter` - Wrapper für `ProgressBar`
|
|
- `SpinnerAdapter` - Wrapper für `Spinner`
|
|
|
|
**Benefits**:
|
|
- Readonly Adapters trotz mutable Original-Components
|
|
- Unified Interface für Layout-System
|
|
- Backward-Compatible
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/Components/ConsoleComponent.php`
|
|
- `src/Framework/Console/Components/Adapters/TableAdapter.php`
|
|
- `src/Framework/Console/Components/Adapters/TextBoxAdapter.php`
|
|
- `src/Framework/Console/Components/Adapters/MenuAdapter.php`
|
|
- `src/Framework/Console/Components/Adapters/ProgressBarAdapter.php`
|
|
- `src/Framework/Console/Components/Adapters/SpinnerAdapter.php`
|
|
|
|
### 3.2 Layout & Section Value Objects
|
|
|
|
**Ziel**: Komposition von Components zu Layouts
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleLayout` Value Object
|
|
- Array von ConsoleSections
|
|
- Sequential Rendering
|
|
- Readonly Class
|
|
|
|
- [ ] `ConsoleSection` Value Object
|
|
- ConsoleComponent + Style
|
|
- Margins, Padding, Borders
|
|
- Readonly Class
|
|
|
|
- [ ] `ConsoleSectionStyle` Value Object
|
|
- Margins (top, bottom)
|
|
- Padding
|
|
- Borders (top, bottom, divider)
|
|
- Background Colors (optional)
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/Layout/ConsoleLayout.php`
|
|
- `src/Framework/Console/Layout/ConsoleSection.php`
|
|
- `src/Framework/Console/Layout/ConsoleSectionStyle.php`
|
|
|
|
### 3.3 Layout Builder (Fluent API)
|
|
|
|
**Ziel**: Einfache Layout-Erstellung
|
|
|
|
**Tasks**:
|
|
- [ ] `ConsoleLayoutBuilder`
|
|
- `addSection(ConsoleComponent): self`
|
|
- `addTable(array, array): self`
|
|
- `addBox(string, ?string): self`
|
|
- `addDivider(): self`
|
|
- `addSpacing(int): self`
|
|
- `build(): ConsoleLayout`
|
|
|
|
**Files**:
|
|
- `src/Framework/Console/Layout/ConsoleLayoutBuilder.php`
|
|
|
|
### 3.4 Tests Phase 3
|
|
|
|
**Tasks**:
|
|
- [ ] Component Adapter Tests
|
|
- [ ] Layout Composition Tests
|
|
- [ ] Builder Tests
|
|
- [ ] Integration Tests
|
|
|
|
**Deliverables Phase 3**:
|
|
- ✅ ConsoleComponent Interface & 5 Adapters
|
|
- ✅ ConsoleLayout System
|
|
- ✅ ConsoleLayoutBuilder Fluent API
|
|
- ✅ Tests & Documentation
|
|
|
|
---
|
|
|
|
## 📚 Documentation & Examples
|
|
|
|
### Documentation Tasks
|
|
- [ ] Console Response Guide
|
|
- Alle Response-Typen mit Beispielen
|
|
- Migration Guide (ExitCode → ConsoleResponse)
|
|
- Best Practices
|
|
|
|
- [ ] Console Template Guide
|
|
- Template Syntax Reference
|
|
- Component Tags Reference
|
|
- Template Examples
|
|
|
|
- [ ] Console Layout Guide
|
|
- Component-Based Layouts
|
|
- Builder Pattern Examples
|
|
- Advanced Compositions
|
|
|
|
### Example Commands
|
|
- [ ] Simple Response Examples
|
|
- TextResponse in verschiedenen Commands
|
|
- TableResponse für Listen
|
|
- TemplateResponse für komplexe Ausgaben
|
|
|
|
- [ ] Template Examples
|
|
- Migration Status Template
|
|
- User List Template
|
|
- Health Check Template
|
|
- System Status Template
|
|
|
|
- [ ] Layout Examples
|
|
- Dashboard Layout
|
|
- Report Layout
|
|
- Multi-Section Layout
|
|
|
|
**Files**:
|
|
- `docs/console/console-response-guide.md`
|
|
- `docs/console/console-template-guide.md`
|
|
- `docs/console/console-layout-guide.md`
|
|
- `src/Framework/Console/Examples/*` (Update)
|
|
|
|
---
|
|
|
|
## 🧪 Testing Strategy
|
|
|
|
### Unit Tests
|
|
- [ ] Alle Response-Typen
|
|
- [ ] Alle Processors
|
|
- [ ] Alle Adapters
|
|
- [ ] Builder Classes
|
|
|
|
### Integration Tests
|
|
- [ ] ConsoleApplication mit verschiedenen Return-Typen
|
|
- [ ] Template Rendering End-to-End
|
|
- [ ] Layout Composition
|
|
- [ ] Backward Compatibility
|
|
|
|
### Example Tests
|
|
- [ ] Alle Example-Commands ausführbar
|
|
- [ ] Template-Examples rendern korrekt
|
|
- [ ] Layout-Examples funktionieren
|
|
|
|
**Coverage Goal**: ≥80%
|
|
|
|
---
|
|
|
|
## 🚀 Migration Strategy
|
|
|
|
### Backward Compatibility
|
|
- ✅ Alle bestehenden Commands funktionieren unverändert
|
|
- ✅ ExitCode Return-Type weiterhin supported
|
|
- ✅ Direktes Output-Schreiben weiterhin möglich
|
|
|
|
### Gradual Adoption
|
|
1. **Phase 1**: ConsoleResponse verfügbar, optional nutzbar
|
|
2. **Phase 2**: Template-System verfügbar, Commands können migrieren
|
|
3. **Phase 3**: Layout-System verfügbar für komplexe Use Cases
|
|
|
|
### Migration Patterns
|
|
```php
|
|
// Old: ExitCode + Direct Output
|
|
#[ConsoleCommand(name: 'old')]
|
|
public function old(ConsoleInput $input, ConsoleOutput $output): ExitCode
|
|
{
|
|
$output->writeLine("Done");
|
|
return ExitCode::SUCCESS;
|
|
}
|
|
|
|
// New: ConsoleResponse
|
|
#[ConsoleCommand(name: 'new')]
|
|
public function new(ConsoleInput $input): ConsoleResponse
|
|
{
|
|
return ConsoleTextResponse::success("Done");
|
|
}
|
|
|
|
// Transition: Both
|
|
#[ConsoleCommand(name: 'transition')]
|
|
public function transition(ConsoleInput $input, ConsoleOutput $output): ConsoleResponse
|
|
{
|
|
$output->writeLine("Processing..."); // Progress output
|
|
return ConsoleTextResponse::success("Done"); // Final result
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ Success Criteria
|
|
|
|
### Phase 1 Complete When:
|
|
- [ ] All 6 Response-Typen implementiert und getestet
|
|
- [ ] ConsoleResponseBuilder funktional
|
|
- [ ] ConsoleApplication unterstützt beide Return-Typen
|
|
- [ ] ≥80% Test Coverage
|
|
- [ ] Documentation vollständig
|
|
|
|
### Phase 2 Complete When:
|
|
- [ ] Template-System funktional (Placeholder, For, Component Tags)
|
|
- [ ] ConsoleTemplateResponse integriert
|
|
- [ ] Template-Examples funktionieren
|
|
- [ ] ≥80% Test Coverage
|
|
- [ ] Documentation vollständig
|
|
|
|
### Phase 3 Complete When:
|
|
- [ ] Component Adapters funktional
|
|
- [ ] Layout-System implementiert
|
|
- [ ] Builder Pattern verfügbar
|
|
- [ ] ≥80% Test Coverage
|
|
- [ ] Documentation vollständig
|
|
|
|
---
|
|
|
|
## 🎯 Quick Start (Phase 1 only - Minimum Viable)
|
|
|
|
**Minimal Implementation für sofortige Nutzbarkeit**:
|
|
|
|
1. ConsoleResponse Interface
|
|
2. ConsoleTextResponse (mit Factory Methods)
|
|
3. ConsoleTableResponse
|
|
4. ConsoleCompositeResponse
|
|
5. ConsoleResponseBuilder
|
|
6. ConsoleApplication Update
|
|
|
|
**Result**: Commands können sofort ConsoleResponse nutzen ohne Template-System!
|
|
|
|
---
|
|
|
|
## 📊 Timeline Estimate
|
|
|
|
- **Phase 1**: 1 Woche (Foundation - ESSENTIAL)
|
|
- **Phase 2**: 1 Woche (Template System - RECOMMENDED)
|
|
- **Phase 3**: 1 Woche (Layout System - OPTIONAL)
|
|
|
|
**Minimum Viable**: Phase 1 only (1 Woche)
|
|
**Recommended**: Phase 1 + 2 (2 Wochen)
|
|
**Complete**: Phase 1 + 2 + 3 (3 Wochen)
|
|
|
|
---
|
|
|
|
## 🔗 Related Systems
|
|
|
|
### Integration Points
|
|
- **Console Module**: Bestehende Components (Table, TextBox, Menu, etc.)
|
|
- **View System**: Template-Processor-Pattern wiederverwenden
|
|
- **HTTP System**: Response-Pattern analog zu JsonResponse, ViewResult
|
|
- **Testing**: Pest Framework für alle Tests
|
|
|
|
### Dependencies
|
|
- Bestehende Console Components (keine Änderungen)
|
|
- ConsoleOutput Interface (keine Änderungen)
|
|
- ExitCode Enum (keine Änderungen)
|
|
- ConsoleStyle, ConsoleColor (keine Änderungen)
|
|
|
|
---
|
|
|
|
## 📝 Notes & Decisions
|
|
|
|
### Design Decisions
|
|
1. **String-based Templates** (nicht DOM) - Einfacher für Console-Output
|
|
2. **Method-based Commands** - Kompatibel mit `#[ConsoleCommand]` Attribute
|
|
3. **Backward Compatible** - Beide Return-Typen (ExitCode | ConsoleResponse)
|
|
4. **Adapter Pattern** - Wrapper für bestehende mutable Components
|
|
5. **Composition** - Layout aus Components komponieren, nicht erben
|
|
|
|
### Open Questions
|
|
- [ ] Template-Caching Strategy?
|
|
- [ ] Performance-Optimierung für große Outputs?
|
|
- [ ] ANSI-Code-Handling in Templates?
|
|
- [ ] Interactive Components in Templates?
|
|
|
|
### Future Enhancements
|
|
- Progress Bars in Templates
|
|
- Animated Spinners in Templates
|
|
- Color Themes für Templates
|
|
- Template Inheritance/Extends
|
|
- Custom Template Functions
|