feat: implement RenderOp data model and core RenderOp types #314

Merged
freemo merged 1 commit from feature/m2-render-ops into master 2026-03-16 19:52:09 +00:00
Owner

Summary

  • Implements the RenderOp value object class for the UI render pipeline as specified in issue #304
  • RenderOps are immutable value objects (frozen after creation) that describe rendering instructions
  • Seven core RenderOp types: text_append, map_refresh, bar_update, prompt_update, window_clear, overlay_show, overlay_hide
  • Factory methods for convenient construction with validation of required fields
  • Equality comparison support (== and hash) for use as hash keys
  • to_h serialization for logging, replaying, and debugging

Testing

  • 36 Cucumber unit test scenarios covering all factory methods, immutability, validation, equality comparison, and type constants
  • 3 Cucumber integration test scenarios for realistic usage patterns
  • All new tests pass

Changes

  • Added lib/aethyr/core/render/render_op.rb - Main RenderOp value object class with YARD documentation
  • Added tests/unit/render_ops.feature - Unit test scenarios
  • Added tests/unit/step_definitions/render_ops_steps.rb - Unit test step definitions
  • Added tests/integration/render_op_integration.feature - Integration test scenarios
  • Added tests/integration/step_definitions/render_op_integration_steps.rb - Integration test step definitions
  • Updated CHANGELOG.md - Added entry for the new feature

Closes #304

## Summary - Implements the RenderOp value object class for the UI render pipeline as specified in issue #304 - RenderOps are immutable value objects (frozen after creation) that describe rendering instructions - Seven core RenderOp types: text_append, map_refresh, bar_update, prompt_update, window_clear, overlay_show, overlay_hide - Factory methods for convenient construction with validation of required fields - Equality comparison support (== and hash) for use as hash keys - to_h serialization for logging, replaying, and debugging ## Testing - 36 Cucumber unit test scenarios covering all factory methods, immutability, validation, equality comparison, and type constants - 3 Cucumber integration test scenarios for realistic usage patterns - All new tests pass ## Changes - Added `lib/aethyr/core/render/render_op.rb` - Main RenderOp value object class with YARD documentation - Added `tests/unit/render_ops.feature` - Unit test scenarios - Added `tests/unit/step_definitions/render_ops_steps.rb` - Unit test step definitions - Added `tests/integration/render_op_integration.feature` - Integration test scenarios - Added `tests/integration/step_definitions/render_op_integration_steps.rb` - Integration test step definitions - Updated `CHANGELOG.md` - Added entry for the new feature Closes #304
freemo added this to the v1.1.0 milestone 2026-03-16 14:28:17 +00:00
Implements the RenderOp value object class for the UI render pipeline as
specified in issue #304. RenderOps are immutable value objects that describe
rendering instructions without specifying how they should be rendered.

Key features:
- Immutable value objects (frozen after creation) with type, window, and data
- Seven core RenderOp types: text_append, map_refresh, bar_update,
  prompt_update, window_clear, overlay_show, overlay_hide
- Factory methods for convenient construction: RenderOp.text_append(),
  RenderOp.bar_update(), etc.
- Data validation per type (required fields are enforced)
- Equality comparison support (== and hash for use as hash keys)
- to_h serialization for logging and debugging
- Comprehensive YARD documentation

Testing:
- 36 Cucumber scenarios covering all factory methods, immutability,
  validation, equality, and type constants
- 3 integration scenarios for realistic usage patterns

ISSUES CLOSED: #304
freemo force-pushed feature/m2-render-ops from 4edb789734 to 11846b3031 2026-03-16 16:54:57 +00:00 Compare
freemo force-pushed feature/m2-render-ops from 11846b3031 to 2768aa3eed 2026-03-16 17:30:11 +00:00 Compare
freemo force-pushed feature/m2-render-ops from 2768aa3eed to ef96ad6b30 2026-03-16 19:51:58 +00:00 Compare
freemo merged commit ef96ad6b30 into master 2026-03-16 19:52:09 +00:00
freemo deleted branch feature/m2-render-ops 2026-03-16 19:52:09 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: aethyr/Aethyr#314
No description provided.