Skip to content

Commit ae76855

Browse files
committed
docs: update roadmap
1 parent b55f5d8 commit ae76855

1 file changed

Lines changed: 58 additions & 33 deletions

File tree

docs/roadmaps/phase-1-mvp-features.md

Lines changed: 58 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
| Sub-Milestone | Focus | Status |
44
|---------------|-------|--------|
5-
| **M2A** | OpenTUI Migration + Core TUI Screens | In Progress (migration first) |
6-
| **M2B** | Direct Commands | Blocked (depends on M2A) |
7-
| **M2C** | Advanced TUI + Polish + Docs | Blocked (depends on M2A + M2B) |
5+
| **M2A** | OpenTUI Migration + Core TUI Screens | ✅ Complete |
6+
| **M2B** | Direct Commands | Open (M2A complete) |
7+
| **M2C** | Advanced TUI + Polish + Docs | In Progress |
8+
| **M2D** | Homebrew Distribution | Open (2BD.1 complete) |
89

910
<details>
1011
<summary><strong>Colour Key</strong></summary>
@@ -186,16 +187,12 @@ title: M2B — Direct Commands
186187
---
187188
graph TD
188189
189-
2TI.17["`*2TI.17*<br/>M2A task<br/>test real data`"]:::must-blocked
190-
191-
2TI.17 --> 2DC.2
192-
193-
2DC.2["`*2DC.2*<br/>**SHOULD**<br/>iris convert`"]:::should-blocked --> 2DC.3
190+
2DC.2["`*2DC.2*<br/>**SHOULD**<br/>iris convert`"]:::should-open --> 2DC.3
194191
2DC.3["`*2DC.3*<br/>**SHOULD**<br/>iris validate`"]:::should-blocked
195192
196193
phase1{"`**M2B**<br/>Complete`"}:::mile
197194
198-
classDef must-blocked fill:#F3D8E6,color:#000;
195+
classDef should-open fill:#6F2A52,color:#fff;
199196
classDef should-blocked fill:#A45A84,color:#fff;
200197
classDef could-blocked fill:#5FA3BA,color:#fff;
201198
classDef mile fill:#E8EFF6,color:#000;
@@ -212,6 +209,40 @@ classDef mile fill:#E8EFF6,color:#000;
212209

213210
</details>
214211

212+
<details>
213+
<summary><h3>M2D: Homebrew Distribution</h3></summary>
214+
215+
> [!IMPORTANT]
216+
> **Goal:** Zero-friction installation via Homebrew tap (no terminal commands, no Gatekeeper warnings, no Apple Developer account)
217+
218+
```mermaid
219+
---
220+
title: M2D — Homebrew Distribution
221+
---
222+
graph TD
223+
224+
2HB.1["`*2HB.1*<br/>**MUST**<br/>homebrew tap setup`"]:::must-open
225+
226+
phase1{"`**M2D**<br/>Complete`"}:::mile
227+
228+
2HB.1 --> phase1
229+
230+
classDef must-open fill:#D6A3BF,color:#000;
231+
classDef mile fill:#E8EFF6,color:#000;
232+
```
233+
234+
### Must Have
235+
236+
- [ ] **2HB.1** — Set up Homebrew tap for frictionless macOS distribution — **depends on 2BD.1**
237+
- Create `foundersandcoders/homebrew-iris` repository
238+
- Write `Formula/iris.rb` with binary URLs and SHA256 checksums
239+
- Support both ARM64 and Intel architectures
240+
- Document user installation: `brew install foundersandcoders/iris/iris`
241+
- Document maintainer workflow for version bumps
242+
- Consider GitHub Actions automation for tap updates (optional enhancement)
243+
244+
</details>
245+
215246
<details>
216247
<summary><h3>M2C: Advanced TUI + Polish + Docs</h3></summary>
217248

@@ -232,48 +263,46 @@ graph TD
232263
233264
2TI.33["`*2TI.33*<br/>**SHOULD**<br/>collection per convert`"]:::should-open
234265
235-
2TI.10["`*2TI.10*<br/>**MUST**<br/>submission history browser`"]:::must-blocked
266+
2TI.10["`*2TI.10*<br/>**MUST**<br/>submission history browser`"]:::must-open
236267
2TI.18["`*2TI.18*<br/>**SHOULD**<br/>visual feedback/polish`"]:::should-blocked
237268
2TC.1["`*2TC.1*<br/>**SHOULD**<br/>clean test history`"]:::should-blocked
238-
2UD.1["`*2UD.1*<br/>**SHOULD**<br/>user guide`"]:::should-blocked
269+
2UD.1["`*2UD.1*<br/>**SHOULD**<br/>user guide`"]:::should-open
239270
2UD.2["`*2UD.2*<br/>**COULD**<br/>validation rules docs`"]:::could-blocked
240271
2TM.5["`*2TM.5*<br/>**COULD**<br/>schema short names`"]:::could-open
241272
2TM.6["`*2TM.6*<br/>**COULD**<br/>grouped schema fields`"]:::could-blocked
242273
2TC.2["`*2TC.2*<br/>**COULD**<br/>history cleanup utility`"]:::could-blocked
243274
2TC.3["`*2TC.3*<br/>**COULD**<br/>dual-picker screen`"]:::could-blocked
244275
2TC.4["`*2TC.4*<br/>**COULD**<br/>bordered detail panel`"]:::could-blocked
245276
246-
2TI.12["`*2TI.12*<br/>M2A task<br/>contextual help`"]:::should-blocked
247-
2TI.31["`*2TI.31*<br/>M2A task<br/>success proof`"]:::should-blocked
277+
2TI.12["`*2TI.12*<br/>**SHOULD**<br/>contextual help`"]:::should-blocked
278+
2TI.31["`*2TI.31*<br/>**SHOULD**<br/>success proof`"]:::should-blocked
248279
2TS.2["`*2TS.2*<br/>**COULD**<br/>schema manager screen`"]:::could-blocked
249280
2TS.3["`*2TS.3*<br/>**COULD**<br/>schema version selector`"]:::could-blocked --> 2TS.4
250281
2TS.4["`*2TS.4*<br/>**COULD**<br/>dynamic migration guidance`"]:::could-blocked
251282
2TI.19["`*2TI.19*<br/>**COULD**<br/>schema settings integration`"]:::could-blocked
252283
253284
2DC.4["`*2DC.4*<br/>M2B task<br/>iris check`"]:::could-blocked
254285
255-
2BD.1["`*2BD.1*<br/>**MUST**<br/>standalone binary`"]:::must-blocked
256-
2BD.2["`*2BD.2*<br/>**COULD**<br/>GH Actions release`"]:::could-blocked
286+
2BD.2["`*2BD.2*<br/>**COULD**<br/>GH Actions release`"]:::could-open
257287
258288
%% Required dependencies %%
259289
2TI.10 --> 2TI.12 & 2TI.31
260290
2TI.12 & 2TI.31 --> 2TS.2
261291
2TI.18 --> 2DC.4 & 2TC.1
262-
2TI.10 & 2TI.18 --> 2BD.1
263-
2BD.1 --> phase1
292+
264293
phase1{"`**M2C**<br/>Complete`"}:::mile
265294
266295
%% New task dependencies %%
267296
2TM.5 -.->|optional| 2TM.6
268297
269298
%% Optional dependencies %%
270-
2BD.1 -.->|optional| 2UD.1 & 2BD.2
271299
2BD.2 -.->|optional| phase1
272300
2UD.1 -.->|optional| 2UD.2 & phase1
273301
2TS.2 -.->|optional| 2TS.3 & 2TI.19 & 2TC.2
274302
2TC.2 -.->|optional| 2TC.3 & 2TC.4
275303
2TI.33 & 2TM.5 & 2TM.6 & 2TI.19 & 2TS.4 & 2UD.2 & 2DC.4 & 2TC.1 & 2TC.2 & 2TC.3 & 2TC.4 -.->|optional| phase1
276304
305+
classDef must-open fill:#D6A3BF,color:#000;
277306
classDef must-blocked fill:#F3D8E6,color:#000;
278307
classDef should-open fill:#6F2A52,color:#fff;
279308
classDef should-blocked fill:#A45A84,color:#fff;
@@ -284,13 +313,13 @@ classDef mile fill:#E8EFF6,color:#000;
284313

285314
### Must Have
286315

287-
- [ ] **2TI.12** — Add help overlay system (contextual help; can use OpenTUI's built-in overlay positioning) — **depends on 2TI.11, 2TI.10**
316+
- [ ] **2TI.12** — Add help overlay system (contextual help; can use OpenTUI's built-in overlay positioning) — **depends on 2TI.10**
288317
- [x] **2TM.2** — Implement CSV column → XSD path mapping UI (interactive path selector; uses `SelectRenderable` for column/path lists, `InputRenderable` for search/filter)
289318
- [x] **2TM.3** — Add mapping preview/validation (show which fields will map, highlight issues; uses `BoxRenderable` for preview panel, `TextRenderable` for status) — **depends on 2TM.2**
290319
- [x] **2TM.1** — Build mapping builder screen (list available mappings, create new; uses `SelectRenderable` + `GroupRenderable` flexbox layout) — **depends on 2TM.3**
291320
- [x] **2TM.4** — Implement mapping save dialog (name, description, set as default; uses `InputRenderable` + `BoxRenderable`) — **depends on 2TM.1**
292321
- [ ] **2TI.10** — Create submission history browser (uses `ScrollBox` for history list, `BoxRenderable` for detail cards)
293-
- [ ] **2BD.1** — Bundle TUI into standalone executables (`bun build --compile` targeting macOS + Windows; single binary, no runtime dependency)**depends on 2TI.10, 2TI.18**
322+
- [x] **2BD.1** — Bundle TUI into standalone executables (`bun build --compile` targeting macOS; single binary, no runtime dependency)
294323

295324
### Should Have
296325

@@ -327,41 +356,37 @@ title: Phase 1 — Complete Picture
327356
---
328357
graph TD
329358
330-
%% M2A Tasks (optional enhancements) %%
331-
2TI.12["`*2TI.12*<br/>component<br/>help`"]:::should-open
332-
2TI.31["`*2TI.31*<br/>enhance<br/>success proof`"]:::should-open
333-
334359
%% M2B Tasks %%
335360
2DC.2["`*2DC.2*<br/>command<br/>convert`"]:::should-open
336361
2DC.3["`*2DC.3*<br/>command<br/>validate`"]:::should-blocked
337362
2DC.4["`*2DC.4*<br/>command<br/>check`"]:::could-blocked
338363
339364
%% M2C Tasks %%
365+
2TI.10["`*2TI.10*<br/>screen<br/>history`"]:::must-open
366+
2TI.12["`*2TI.12*<br/>component<br/>help`"]:::should-blocked
367+
2TI.31["`*2TI.31*<br/>enhance<br/>success proof`"]:::should-blocked
340368
2TI.33["`*2TI.33*<br/>enhance<br/>collection per convert`"]:::should-open
341369
2TM.5["`*2TM.5*<br/>enhance<br/>schema short names`"]:::could-open
342370
2TM.6["`*2TM.6*<br/>enhance<br/>grouped fields`"]:::could-blocked
343371
2TS.2["`*2TS.2*<br/>feat<br/>schema mgr`"]:::could-blocked
344372
2TS.3["`*2TS.3*<br/>component<br/>schema selector`"]:::could-blocked
345373
2TS.4["`*2TS.4*<br/>component</br>migration`"]:::could-blocked
346374
2TI.19["`*2TI.19*<br/>enhance<br/>schema settings`"]:::could-blocked
347-
2TI.10["`*2TI.10*<br/>screen<br/>history`"]:::must-blocked
348375
2TI.18["`*2TI.18*<br/>enhance<br/>polish`"]:::should-blocked
349376
2TC.1["`*2TC.1*<br/>test<br/>clean history`"]:::should-blocked
350-
2UD.1["`*2UD.1*<br/>doc<br/>user guide`"]:::should-blocked
377+
2UD.1["`*2UD.1*<br/>doc<br/>user guide`"]:::should-open
351378
2UD.2["`*2UD.2*<br/>doc<br/>val rules`"]:::could-blocked
352379
2TC.2["`*2TC.2*<br/>util<br/>history cleanup`"]:::could-blocked
353380
2TC.3["`*2TC.3*<br/>enhance<br/>dual-picker`"]:::could-blocked
354381
2TC.4["`*2TC.4*<br/>enhance<br/>bordered panel`"]:::could-blocked
355382
356383
%% Build & Distribution %%
357-
2BD.1["`*2BD.1*<br/>build<br/>standalone binary`"]:::must-blocked
358-
2BD.2["`*2BD.2*<br/>build<br/>GH Actions release`"]:::could-blocked
384+
2BD.2["`*2BD.2*<br/>build<br/>GH Actions release`"]:::could-open
385+
2HB.1["`*2HB.1*<br/>dist<br/>homebrew tap`"]:::must-open
359386
360387
%% Milestone nodes %%
361388
phase1{"`**Phase 1**<br/>Complete`"}:::mile
362389
363-
%% M2A Dependencies %%
364-
365390
%% M2B Dependencies %%
366391
2DC.2 --> 2DC.3
367392
2DC.3 --> 2TI.18
@@ -372,11 +397,11 @@ phase1{"`**Phase 1**<br/>Complete`"}:::mile
372397
2TI.12 & 2TI.31 --> 2TS.2
373398
2TI.18 --> 2DC.4 & 2TC.1
374399
2TS.3 --> 2TS.4
375-
2TI.10 & 2TI.18 --> 2BD.1
376-
2BD.1 --> phase1
400+
401+
%% M2D Dependencies %%
402+
2HB.1 --> phase1
377403
378404
%% OPTIONAL %%
379-
2BD.1 -.->|optional| 2UD.1 & 2BD.2
380405
2BD.2 -.->|optional| phase1
381406
2UD.1 -.->|optional| 2UD.2 & phase1
382407
2TS.2 -.->|optional| 2TS.3 & 2TI.19 & 2TC.2

0 commit comments

Comments
 (0)