Skip to content

Commit 0dbddeb

Browse files
committed
Convert ROADMAP.md to AsciiDoc
1 parent 28292d1 commit 0dbddeb

1 file changed

Lines changed: 173 additions & 0 deletions

File tree

ROADMAP.adoc

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
// SPDX-License-Identifier: AGPL-3.0-or-later
2+
= RAZE-TUI Roadmap
3+
4+
This roadmap outlines the development plan for RAZE-TUI, a polyglot TUI framework using Rust, Zig, and Ada/SPARK.
5+
6+
== Current Status (v0.1.0-dev)
7+
8+
=== Completed
9+
10+
- [x] **Rust Core** - Complete state management and type system
11+
- TuiState with dimensions, running flag, version tracking
12+
- Event system (Key, Mouse, Resize, Quit events)
13+
- Widget type enumeration (Label, Input, Button, Panel, List)
14+
- Color system (default, ANSI 256, RGB modes)
15+
- Style system (foreground, background, bold, italic, underline)
16+
- Rect for layout calculations
17+
- Full test coverage
18+
- `#![no_std]` + `#![forbid(unsafe_code)]` for safety
19+
20+
- [x] **Zig Bridge** - FFI layer complete
21+
- All core FFI exports with C ABI
22+
- State lifecycle (init, shutdown, is_running)
23+
- Dimension management (get/set width/height)
24+
- Event polling infrastructure
25+
- String buffer interop for Ada
26+
- Version tracking for change detection
27+
- Unit tests passing
28+
29+
- [x] **Ada TUI** - FFI bindings complete
30+
- All C function imports
31+
- Ada wrapper procedures/functions
32+
- SPARK contract annotations (Pre/Post conditions)
33+
- Type-safe dimension and version handling
34+
35+
- [x] **CI/CD Pipeline**
36+
- GitHub Actions workflow for all three languages
37+
- Pinned action versions (SHA hashes) for supply chain security
38+
- Multi-stage build (Rust -> Zig -> Ada)
39+
- GitLab/Bitbucket mirroring
40+
41+
- [x] **Security & Governance**
42+
- Comprehensive SECURITY.md policy
43+
- Provenance tracking (.well-known/provenance.json)
44+
- Dual license (MIT OR AGPL-3.0-or-later)
45+
- AI training consent requirements
46+
47+
---
48+
49+
== Phase 1: Terminal Backend
50+
51+
=== 1.1 Terminal Detection & Initialization
52+
- [ ] Detect terminal capabilities (colors, Unicode support)
53+
- [ ] Raw mode handling in Zig
54+
- [ ] Alternate screen buffer support
55+
- [ ] Signal handling (SIGWINCH for resize, SIGINT/SIGTERM)
56+
57+
=== 1.2 Input Handling
58+
- [ ] Keyboard input parsing (standard keys, function keys, modifiers)
59+
- [ ] Mouse input support (clicks, scroll, movement)
60+
- [ ] Paste detection (bracketed paste mode)
61+
- [ ] UTF-8 input handling
62+
63+
=== 1.3 Output Rendering
64+
- [ ] ANSI escape sequence generation
65+
- [ ] Double buffering for flicker-free updates
66+
- [ ] Dirty region tracking (minimal redraws)
67+
- [ ] Unicode/grapheme cluster support
68+
69+
---
70+
71+
== Phase 2: Widget System
72+
73+
=== 2.1 Layout Engine
74+
- [ ] Flexbox-style layout constraints
75+
- [ ] Absolute positioning
76+
- [ ] Percentage-based sizing
77+
- [ ] Min/max constraints
78+
- [ ] Margin and padding
79+
80+
=== 2.2 Core Widgets
81+
- [ ] Label (static text, word wrap, alignment)
82+
- [ ] Input (single-line text input, cursor, selection)
83+
- [ ] Button (focusable, click handling)
84+
- [ ] Panel (bordered container, title)
85+
- [ ] List (scrollable, selectable items)
86+
87+
=== 2.3 Advanced Widgets
88+
- [ ] Table (columns, sorting, selection)
89+
- [ ] Tree (expandable nodes)
90+
- [ ] Tabs (tabbed interface)
91+
- [ ] Progress bar
92+
- [ ] Scrollbar
93+
- [ ] Modal dialogs
94+
95+
---
96+
97+
== Phase 3: Event System
98+
99+
=== 3.1 Event Dispatch
100+
- [ ] Bubble/capture event phases
101+
- [ ] Focus management
102+
- [ ] Tab navigation
103+
- [ ] Event handlers in Ada
104+
105+
=== 3.2 Async Integration
106+
- [ ] Tokio integration for Rust async
107+
- [ ] Timer events
108+
- [ ] Background task spawning
109+
- [ ] Channel-based communication
110+
111+
---
112+
113+
== Phase 4: SPARK Verification
114+
115+
=== 4.1 Proof Annotations
116+
- [ ] Preconditions for all public APIs
117+
- [ ] Postconditions for state changes
118+
- [ ] Loop invariants where applicable
119+
- [ ] Data flow contracts
120+
121+
=== 4.2 Verification Targets
122+
- [ ] Prove absence of runtime errors
123+
- [ ] Prove memory safety properties
124+
- [ ] Prove state machine correctness
125+
- [ ] Document proof limitations
126+
127+
---
128+
129+
== Phase 5: Polish & Release
130+
131+
=== 5.1 Documentation
132+
- [ ] API reference (all three languages)
133+
- [ ] Architecture guide
134+
- [ ] Tutorial: Building a simple TUI app
135+
- [ ] Examples directory
136+
137+
=== 5.2 Testing
138+
- [ ] Integration tests across FFI boundary
139+
- [ ] Property-based testing (Rust)
140+
- [ ] Fuzzing for input parsing
141+
- [ ] Performance benchmarks
142+
143+
=== 5.3 Packaging
144+
- [ ] Cargo publish (raze-core)
145+
- [ ] Zig package manager support
146+
- [ ] Alire package (Ada)
147+
- [ ] Release binaries
148+
149+
---
150+
151+
== Future Considerations
152+
153+
- **Accessibility**: Screen reader support, high contrast themes
154+
- **Theming**: User-configurable color schemes
155+
- **i18n**: Internationalization and RTL support
156+
- **Alternative backends**: Windows Console API, terminfo
157+
- **GUI target**: Optional graphical backend using same widget tree
158+
159+
---
160+
161+
== Contributing
162+
163+
Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
164+
165+
Priority areas:
166+
1. Terminal backend implementation
167+
2. Widget implementations
168+
3. SPARK proof annotations
169+
4. Documentation and examples
170+
171+
---
172+
173+
*Last updated: 2025-12-17*

0 commit comments

Comments
 (0)