Skip to content

Commit b5b3a37

Browse files
Update TODO.md with completed features and enhancements
Updated the TODO.md to reflect completed features and enhancements. Marked several features as complete and added notes on their implementations.
1 parent 7db5936 commit b5b3a37

1 file changed

Lines changed: 69 additions & 23 deletions

File tree

TODO.md

Lines changed: 69 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,38 @@ This document tracks all planned features for the Java Code Visualizer, organize
66

77
---
88

9-
## Quick Wins (Small Effort, Nice Polish)
9+
## Quick Wins (Small Effort, Nice Polish) — ✅ ALL COMPLETE
1010

1111
- [x] **Line count & character count in status bar**
1212
Display total lines, character count, and current cursor position (Ln, Col) at the bottom of the editor pane — gives users immediate awareness of code size and cursor location, just like VS Code.
1313

1414
- [x] **Download code button**
15-
Add a toolbar button to save the current editor content as a `.java` file to the user's machine — eliminates the need to manually copy-paste code out of the visualizer.
15+
Toolbar icon button saves the current editor content as a `.java` file named after the class. Also triggered via `Cmd/Ctrl+S`.
1616

1717
- [x] **Fullscreen toggle**
18-
Add a button to expand the editor or the entire app to fullscreen mode — provides a distraction-free environment for focused coding and visualization.
18+
Toolbar button expands the entire app to browser fullscreen mode. Icon switches between Maximize/Minimize. Also triggered via `F11`.
1919

2020
- [x] **Keyboard shortcuts**
21-
Implement common editor shortcuts: `Cmd/Ctrl+Enter` to Compile & Run, `Cmd/Ctrl+S` to download the file, `Cmd/Ctrl+/` to toggle line comments, `Cmd/Ctrl+Z` / `Cmd/Ctrl+Shift+Z` for undo/redo — accelerates workflow for power users and makes the editor feel professional.
21+
`Cmd/Ctrl+Enter` (Compile & Run), `Cmd/Ctrl+S` (Download), `Cmd/Ctrl+/` (Toggle comment), `Cmd/Ctrl+Z` (Undo), `Cmd/Ctrl+Shift+Z` (Redo), `Tab` (Indent), `F11` (Fullscreen). Shortcut hints displayed in the status bar.
2222

2323
---
2424

25-
## Medium Features (Meaningful Upgrades)
25+
## Medium Features (Meaningful Upgrades) — 3 of 5 COMPLETE
2626

27-
- [ ] **Step-through variable diff**
28-
When stepping forward or backward, highlight exactly which variable changed with a before→after animation (not just showing current values) — makes it immediately obvious what each line of code did to the program state.
27+
- [x] **Step-through variable diff**
28+
Before→after diff pills (`13 → 21`), delta badges (`+8`), `NEW` badges for declarations, changes summary header, array cell diff with previous value strikethrough, pulse animations on changed cards.
2929

30-
- [ ] **Execution path visualization**
31-
Add a minimap or margin indicator showing which lines were executed vs skipped (e.g., greyed-out lines that were never reached) — helps users understand control flow, especially in programs with conditionals and early returns.
30+
- [x] **Execution path visualization**
31+
Green execution stripes in gutter, execution count badges for looped lines, dimmed never-reached lines with "not reached" tags, coverage percentage indicator with mini progress bar in step bar.
3232

3333
- [ ] **Breakpoint-aware auto-play**
3434
Make auto-play pause at breakpoints instead of stepping through every line — allows users to set breakpoints on interesting lines and "fast-forward" to them, mimicking a real debugger experience.
3535

3636
- [ ] **Multi-tab editor**
3737
Support opening multiple files simultaneously with tabs in the editor pane — useful when users load several `.java` files from disk and want to switch between them without losing their place.
3838

39-
- [ ] **Undo/Redo**
40-
Implement `Cmd/Ctrl+Z` for undo and `Cmd/Ctrl+Shift+Z` for redo in the code editor — essential for a comfortable editing experience, especially when experimenting with code changes.
39+
- [x] **Undo/Redo**
40+
100-entry history stack with `updateCode()` wrapper, `handleUndo()`/`handleRedo()` navigation, history reset on example/file load. Intercepts browser's native `Cmd+Z`.
4141

4242
---
4343

@@ -73,7 +73,7 @@ This document tracks all planned features for the Java Code Visualizer, organize
7373

7474
---
7575

76-
## Interpreter Enhancements
76+
## Interpreter Enhancements — 4 of 7 COMPLETE
7777

7878
- [ ] **Multi-line comment support**
7979
Handle `/* */` block comments spanning multiple lines — currently only single-line `//` comments are fully supported.
@@ -87,14 +87,17 @@ This document tracks all planned features for the Java Code Visualizer, organize
8787
- [ ] **Try/catch/finally**
8888
Add exception handling support — enables programs that gracefully handle errors, which is fundamental to real-world Java programming.
8989

90-
- [ ] **ArrayList and HashMap**
91-
Add basic support for `ArrayList` and `HashMap` from `java.util` — the most commonly used Java collections that students encounter early on.
90+
- [x] **ArrayList and HashMap**
91+
Full ArrayList (16 methods), HashMap (15 methods), StringBuilder (13 methods), Collections (8 static methods) support with proper state snapshots and deep-copying. Also supports `new ArrayList<>(Arrays.asList(...))` constructor pattern.
9292

93-
- [ ] **String formatting**
94-
Support `String.format()` and `System.out.printf()` — commonly used in Java for formatted output.
93+
- [x] **String formatting**
94+
`String.format()`, `System.out.printf()` with `%d`, `%f`, `%.2f`, `%s`, `%n`, `%%` specifiers.
9595

96-
- [ ] **Multiple classes / static methods across classes**
97-
Allow programs with helper classes or utility methods defined outside `main` — enables more realistic Java program structures.
96+
- [x] **Comprehensive standard library**
97+
Math (17 methods + PI, E), Integer/Long/Double/Float/Byte/Short (methods + constants + SIZE/BYTES), Character (11 methods), String (17 new instance methods + 3 static), Arrays (8 utility methods), wrapper type declarations, number instance methods (.intValue(), .doubleValue(), etc.).
98+
99+
- [x] **Inline comment stripping**
100+
`stripInlineComment()` handles `//` comments after statements while preserving `//` inside string literals (e.g., URLs). Applied during parsing before any pattern matching.
98101

99102
---
100103

@@ -119,8 +122,8 @@ This document tracks all planned features for the Java Code Visualizer, organize
119122

120123
## Completed Features ✓
121124

125+
### Core Engine (v1.0)
122126
- [x] Java Interpreter Engine (primitives, arrays, methods, recursion, control flow)
123-
- [x] Dark/Light theme toggle with Sun/Moon animation
124127
- [x] Syntax-highlighted code editor with Fira Code font
125128
- [x] Line numbers with clickable breakpoints
126129
- [x] Variables tab with array cell visualization and change highlighting
@@ -130,15 +133,58 @@ This document tracks all planned features for the Java Code Visualizer, organize
130133
- [x] Step Forward/Back, Auto Play/Pause, Reset
131134
- [x] Speed slider for auto-play
132135
- [x] 9 built-in example programs with descriptive class names
133-
- [x] Scanner/keyboard input support (nextInt, nextDouble, nextLine, next, nextBoolean)
134-
- [x] Inline input display in Output tab (inputs appear after prompts)
136+
137+
### UI/Theme (v2.0–v12.0)
138+
- [x] Dark/Light theme toggle with Sun/Moon animation
139+
- [x] Full-width layout fix
140+
- [x] Java logo icon
141+
- [x] Fira Code font, 16px, ligature-free cursor alignment
142+
- [x] Native text selection (word-level copy working)
143+
144+
### File & Input (v4.0–v16.0)
135145
- [x] Open Java File(s) from local machine
136146
- [x] Dynamic file label from class name
137-
- [x] Java logo icon
147+
- [x] Scanner/keyboard input support (nextInt, nextDouble, nextLine, next, nextBoolean)
148+
- [x] Inline input display in Output tab (inputs appear after prompts)
138149
- [x] Clear button for Output tab
150+
151+
### Quick Wins (v17.0–v18.0)
139152
- [x] Line count, character count, and cursor position in status bar
153+
- [x] Download code as .java file (Cmd/Ctrl+S)
154+
- [x] Fullscreen toggle (F11)
155+
- [x] Keyboard shortcuts (Cmd+Enter, Cmd+S, Cmd+/, Cmd+Z, Cmd+Shift+Z)
156+
- [x] Undo/Redo with 100-entry history stack
157+
- [x] Comment toggling (Cmd+/)
158+
- [x] Status bar shortcut hints
159+
160+
### Medium Features (v19.0–v20.0)
161+
- [x] Step-through variable diff (before→after pills, delta badges, NEW badges, card animations)
162+
- [x] Execution path visualization (green stripes, count badges, dimmed lines, coverage %)
163+
164+
### Interpreter Library (v21.0–v23.0)
165+
- [x] Math: 17 methods + PI, E constants
166+
- [x] Integer: 10 methods + MAX_VALUE, MIN_VALUE, SIZE, BYTES
167+
- [x] Long: 4 methods + constants + SIZE, BYTES
168+
- [x] Double: 6 methods + 5 constants + SIZE, BYTES
169+
- [x] Float/Byte/Short: MAX_VALUE, MIN_VALUE, SIZE, BYTES
170+
- [x] Character: 11 methods
171+
- [x] String: 17 new instance methods + valueOf, join, format static
172+
- [x] StringBuilder: 13 methods (full class)
173+
- [x] ArrayList: 16 methods (full class)
174+
- [x] HashMap: 15 methods (full class)
175+
- [x] Collections: 8 static methods
176+
- [x] Arrays: 8 utility methods (fill, copyOf, copyOfRange, equals, deepEquals, binarySearch, asList, toString)
177+
- [x] System: currentTimeMillis, nanoTime, arraycopy, exit
178+
- [x] System.out.printf with %d, %f, %s, %n, %% specifiers
179+
- [x] Wrapper type declarations (Integer, Double, Long, Float, etc.)
180+
- [x] Number instance methods (.intValue(), .doubleValue(), .longValue(), etc.)
181+
- [x] Inline comment stripping (preserves // inside strings)
182+
- [x] IEEE 754 float division (Infinity, NaN for 1.0/0.0)
183+
- [x] Numeric literal suffixes (L, f, d) and underscore separators (100_000)
184+
185+
### Deployment
140186
- [x] Deployed on GitHub Pages with CI/CD via GitHub Actions
141187

142188
---
143189

144-
*Last updated: May 30, 2026*
190+
*Last updated: May 31, 2026*

0 commit comments

Comments
 (0)