You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7db5936
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: JavaCodeVisualizer_VersionHistory.md
+86-1Lines changed: 86 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -293,6 +293,86 @@ Completed all four "Quick Win" features in one release.
293
293
294
294
---
295
295
296
+
### v19.0 — Step-Through Variable Diff
297
+
**Lines:**~3,389 | **Date:** May 31, 2026
298
+
299
+
Enhanced the Variables tab with rich before→after diff visualization when stepping through code.
300
+
301
+
-**Changes summary header** — `⚡ 2 changes on this step: sum, i` (green) or `No variable changes on this step` (muted)
302
+
-**NEW badge** — freshly declared variables get a blue-bordered card with `NEW` pill badge
303
+
-**Before→After diff pill** — changed values show `13 → 21` in a green-tinted rounded container with strikethrough old value, arrow, and bold new value
304
+
-**Delta badge** — numeric changes show `+8` (green) or `-3` (red) indicating the magnitude of change
305
+
-**Card animations** — `card-pulse` scale animation on changed/new cards, keyed to `currentStep` for re-triggering
306
+
-**Array cell diff** — changed cells flash with `cell-flash` animation and show previous value as strikethrough above the cell
307
+
-`prevState` and `varChanges` computed via `useMemo` comparing current and previous step snapshots
308
+
309
+
---
310
+
311
+
### v20.0 — Execution Path Visualization
312
+
**Lines:**~3,492 | **Date:** May 31, 2026
313
+
314
+
Added visual indicators showing which lines were executed, how many times, and which were never reached.
315
+
316
+
-**Green execution stripe** — subtle 3px green bar on the left gutter edge for every executed line (replaces old tiny dot)
317
+
-**Execution count badges** — lines hit multiple times in loops show an orange count badge (`5`, `12`, `99+`)
318
+
-**Dimmed never-reached lines** — at the final step, code lines that were never executed fade to 30% opacity
-**Infrastructure:**`toJavaString()` helper, deep-copy for ArrayList/HashMap/StringBuilder in state snapshots, standalone method call routing for collection operations
Fixed critical interpreter issues discovered during comprehensive method testing with 16 test programs.
354
+
355
+
-**Wrapper type declarations** — `Integer`, `Double`, `Long`, `Float`, `Short`, `Byte`, `Boolean`, `Character`, `Object`, `var` now work as variable types in declarations (previously only primitive types matched)
-**Missing SIZE/BYTES constants** — added for `Short` (16/2), `Byte` (8/1), `Float` (32/4), `Long` (64/8), `Double` (64/8); also `Boolean.TRUE`/`FALSE`
358
+
-**ArrayList constructor with initial collection** — `new ArrayList<>(Arrays.asList(40, 10, 30))` now works
359
+
-**Collection type declarations** — `List<T>`, `Set<T>`, `Collection<T>` assignments from method results like `keySet()`, `values()`, `Arrays.asList()`
360
+
-**Inline comment stripping** — `stripInlineComment()` method scans each line character-by-character, tracks string literal boundaries, and strips `//` comments outside strings. Applied in `parseMethodBody` before any pattern matching. Handles edge cases like `"https://example.com"` correctly
Fixed remaining interpreter issues found during Double/Long method testing.
368
+
369
+
-**IEEE 754 float division** — `1.0 / 0.0` now returns `Infinity` and `0.0 / 0.0` returns `NaN` instead of throwing `ArithmeticException`. Division handler inspects raw expression text for decimal-point patterns to distinguish float from integer division. Integer `10 / 0` still correctly throws
370
+
-**Numeric literal suffixes** — `L`/`l` (long: `55000L`), `f`/`F` (float: `3.14f`), `d`/`D` (double: `3.14d`) now recognized and stripped before parsing
371
+
-**Underscore separators** — Java 7+ numeric literals like `100_000` and `1_000_000` now parsed correctly by stripping underscores
372
+
- Verified with 16 comprehensive test programs covering all method categories
373
+
374
+
---
375
+
296
376
## Summary Table
297
377
298
378
| Version | Key Change | Lines |
@@ -314,4 +394,9 @@ Completed all four "Quick Win" features in one release.
0 commit comments