Skip to content

Commit 51a8e48

Browse files
committed
docs: add exhaustive legacy parity tracker and task plan
1 parent 1bd4681 commit 51a8e48

2 files changed

Lines changed: 113 additions & 0 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ The Vite `base` path is computed from `GITHUB_REPOSITORY` during GitHub Actions
4545
4. Add report and simulation views.
4646
5. Add PWA caching and optional desktop packaging.
4747

48+
## Legacy Parity Tracking
49+
50+
See `/Users/cyrilcombe/Dev/perso/jbead-web/docs/LEGACY_PARITY_TRACKER.md` for the exhaustive Java feature inventory and task breakdown.
51+
4852
## License
4953

5054
GPLv3 (same as original JBead).

docs/LEGACY_PARITY_TRACKER.md

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
# Legacy Parity Tracker (Java -> Web)
2+
3+
Last updated: 2026-02-08
4+
5+
## Purpose
6+
Track feature parity between legacy Java JBead (`/Users/cyrilcombe/Dev/perso/jbead`) and web app (`/Users/cyrilcombe/Dev/perso/jbead-web`), with an actionable task breakdown.
7+
8+
Status legend:
9+
- `DONE`: implemented in web app
10+
- `PARTIAL`: partially implemented
11+
- `TODO`: not implemented yet
12+
- `N/A`: intentionally not planned (desktop-only feature)
13+
14+
## Exhaustive Feature Inventory
15+
16+
| ID | Area | Legacy Feature | Java Reference | Web Status |
17+
|---|---|---|---|---|
18+
| F-001 | Layout | 4 main panes: Draft / Corrected / Simulation / Report | `src/ch/jbead/JBeadFrame.java` `createMainGUI()` | `TODO` |
19+
| F-002 | Layout | Per-pane visibility toggles | `ViewDraftAction`, `ViewCorrectedAction`, `ViewSimulationAction`, `ViewReportAction` | `PARTIAL` (flags in document view, no full UI behavior) |
20+
| F-003 | Layout | Vertical scroll tied to row index | `JBeadFrame.java` + `Model.setScroll()` | `PARTIAL` (basic canvas scroll exists, no shared row scroll control) |
21+
| F-004 | Views | Draft rendering with row markers | `view/DraftPanel.java` | `PARTIAL` (draft grid exists, markers missing) |
22+
| F-005 | Views | Corrected rendering (offset rows / corrected index mapping) | `view/CorrectedPanel.java`, `Model.correct()` | `TODO` |
23+
| F-006 | Views | Simulation rendering (wrapped/shifted woven preview) | `view/SimulationPanel.java` | `TODO` |
24+
| F-007 | Views | Report rendering (infos + color counts + bead run list) | `view/ReportPanel.java` | `TODO` |
25+
| F-008 | Tools | Pencil: click toggles point, drag draws snapped line | `ToolPencilAction`, `DraftPanel.handleMouse*` | `PARTIAL` |
26+
| F-009 | Tools | Select: rectangular selection | `ToolSelectAction`, `Selection.java` | `PARTIAL` |
27+
| F-010 | Tools | Fill (linear fill along flattened pattern) | `ToolFillAction`, `Model.fillLine()` | `DONE` |
28+
| F-011 | Tools | Pipette (pick color from bead) | `ToolPipetteAction`, `DraftPanel.selectColorFrom()` | `TODO` |
29+
| F-012 | Edit | Delete selection content | `EditDeleteAction`, `Model.delete()` | `DONE` |
30+
| F-013 | Edit | Mirror horizontal | `EditMirrorHorizontalAction`, `Model.mirrorHorizontal()` | `DONE` |
31+
| F-014 | Edit | Mirror vertical | `EditMirrorVerticalAction`, `Model.mirrorVertical()` | `DONE` |
32+
| F-015 | Edit | Rotate square selection | `EditRotateAction`, `Model.rotate()` | `DONE` |
33+
| F-016 | Edit | Arrange selection copies with offset | `EditArrangeAction`, `ArrangeDialog`, `Model.arrangeSelection()` | `TODO` |
34+
| F-017 | Edit | Insert row | `EditInsertRowAction`, `Model.insertRow()` | `TODO` |
35+
| F-018 | Edit | Delete row | `EditDeleteRowAction`, `Model.deleteRow()` | `TODO` |
36+
| F-019 | History | Undo | `EditUndoAction`, `Model.undo()`, `BeadUndo.java` | `TODO` |
37+
| F-020 | History | Redo | `EditRedoAction`, `Model.redo()`, `BeadUndo.java` | `TODO` |
38+
| F-021 | View Options | Draw colors toggle | `ViewDrawColorsAction`, `View.drawColors()` | `TODO` |
39+
| F-022 | View Options | Draw symbols toggle | `ViewDrawSymbolsAction`, `View.drawSymbols()` | `TODO` |
40+
| F-023 | View Options | Zoom in/normal/out | `ViewZoomInAction`, `ViewZoomNormalAction`, `ViewZoomOutAction` | `PARTIAL` (zoom value exists, no controls) |
41+
| F-024 | Pattern | Pattern width dialog and resize | `PatternWidthAction`, `PatternWidthDialog`, `Model.setWidth()` | `TODO` |
42+
| F-025 | Pattern | Pattern height dialog and resize | `PatternHeightAction`, `PatternHeightDialog`, `Model.setHeight()` | `TODO` |
43+
| F-026 | Pattern | Preferences (author, organization, symbols, update-check setting) | `PatternPreferencesAction`, `PreferencesDialog` | `TODO` |
44+
| F-027 | Model | Shift left/right (pattern phase shift) | `JBeadFrame.rotateLeft/Right`, `Model.shiftLeft/Right()` | `TODO` |
45+
| F-028 | Model | Repeat detection (`beads per repeat`, rows per repeat) | `Model.updateRepeat()`, `Model.calcRepeat()` | `TODO` |
46+
| F-029 | Palette | 32-color palette with selected color indicator | `ui/ColorPalette.java` | `PARTIAL` (palette exists; not full legacy behavior) |
47+
| F-030 | Palette | Double-click/popup color edit | `ColorPalette.chooseColor()` | `TODO` |
48+
| F-031 | Palette | Set clicked color as background (swap with color 0) | `ColorPalette.asBackground()` | `TODO` |
49+
| F-032 | Input | Numeric shortcuts 0-9 for color selection | `JBeadFrame.formKeyUp()` | `TODO` |
50+
| F-033 | Input | Keyboard shortcuts and accelerators from actions | action classes `putValue(ACCELERATOR_KEY, ...)` | `TODO` |
51+
| F-034 | Input | Space/Escape/arrow interactions for tools/shift | `JBeadFrame.formKeyDown/formKeyUp()` | `TODO` |
52+
| F-035 | File IO | Open `.jbb` | `JBeadFileFormat`, `JBeadMemento` | `DONE` |
53+
| F-036 | File IO | Save/export `.jbb` | `JBeadFileFormat`, `JBeadMemento` | `DONE` |
54+
| F-037 | File IO | Open/save `.dbb` legacy format | `DbbFileFormat`, `DbbMemento` | `TODO` |
55+
| F-038 | File IO | New/Open/Save/Save As flows | `FileNewAction`, `FileOpenAction`, `FileSaveAction`, `FileSaveAsAction` | `PARTIAL` |
56+
| F-039 | File IO | MRU recent files list | `FileMRUAction`, `JBeadFrame.addToMRU()` | `TODO` |
57+
| F-040 | Metadata | Author / organization / notes persisted in file | `Model.saveTo/loadFrom`, `Memento` | `PARTIAL` |
58+
| F-041 | Report | Pattern info block (circumference/repeat/rows/beads) | `ReportInfos.java` | `TODO` |
59+
| F-042 | Report | Color usage counts | `BeadCounts.java` | `TODO` |
60+
| F-043 | Report | Bead run list (sequence counts) | `BeadList.java`, `BeadRun.java` | `TODO` |
61+
| F-044 | Print | Print visible sections (draft/corrected/simulation/report) | `print/DesignPrinter.java` | `TODO` |
62+
| F-045 | Print | Page setup persistence (paper/orientation) | `FilePageSetupAction`, `PrintSettings` | `TODO` |
63+
| F-046 | Info | Technical info dialog | `InfoTechInfosAction`, `dialog/TechInfosDialog` | `N/A` |
64+
| F-047 | Info | Update check | `InfoUpdateCheckAction` | `N/A` |
65+
| F-048 | Info | About dialog | `InfoAboutAction` | `N/A` |
66+
67+
## Task Breakdown (Execution Plan)
68+
69+
### Phase 1 - Multi-view parity foundation
70+
- [ ] T-001 Add workspace layout with Draft, Corrected, Simulation, Report panes
71+
- [ ] T-002 Implement shared vertical row scroll model across panes
72+
- [ ] T-003 Implement Corrected renderer (`Model.correct` equivalent)
73+
- [ ] T-004 Implement Simulation renderer (shift + weave mapping)
74+
- [ ] T-005 Add view visibility toggles for all panes
75+
76+
### Phase 2 - Editing parity
77+
- [ ] T-006 Add pipette tool in Draft pane
78+
- [ ] T-007 Enable edit interactions from Corrected and Simulation panes
79+
- [ ] T-008 Add insert row / delete row actions
80+
- [ ] T-009 Add arrange selection dialog + operation
81+
- [ ] T-010 Add keyboard shortcuts (0-9 colors, arrows for shift, tool shortcuts)
82+
83+
### Phase 3 - Pattern controls and history
84+
- [ ] T-011 Add undo/redo history stack equivalent to `BeadUndo`
85+
- [ ] T-012 Add width/height pattern dialogs and model resizing
86+
- [ ] T-013 Add shift controls (left/right buttons + key repeat)
87+
- [ ] T-014 Implement repeat detection and expose in UI
88+
- [ ] T-015 Add view options: zoom in/normal/out, draw colors/symbols toggles
89+
90+
### Phase 4 - Palette/report completeness
91+
- [ ] T-016 Add full 32-color palette behavior (edit color + set as background)
92+
- [ ] T-017 Build report infos panel (pattern, repeat, row/bead totals)
93+
- [ ] T-018 Build color usage block and bead run list
94+
- [ ] T-019 Add metadata editors (author, organization, notes)
95+
96+
### Phase 5 - File/compat/print
97+
- [ ] T-020 Add file flows: New/Open/Save/Save As equivalents
98+
- [ ] T-021 Add MRU list (local storage based)
99+
- [ ] T-022 Decide `.dbb` support strategy and implement or explicitly drop
100+
- [ ] T-023 Add print/export strategy for web (PDF or print stylesheet)
101+
102+
## Next Recommended Slice
103+
104+
Target a thin vertical slice first:
105+
- [ ] S-001 Implement Corrected and Simulation panes read-only
106+
- [ ] S-002 Add view toggles for Draft/Corrected/Simulation/Report
107+
- [ ] S-003 Add report infos block (without color lists yet)
108+
109+
This slice unlocks visual parity early and reduces risk before implementing advanced editing/history.

0 commit comments

Comments
 (0)