Skip to content

Releases: code4teaching/VisuStruct

VisuStruct 1.2.3

Choose a tag to compare

@code4teaching code4teaching released this 16 May 20:38

VisuStruct 1.2.3

Release after 1.2.2.

Kotlin migration

  • Production sources are now Kotlin under src/main/kotlin/ (UI, control, structure elements, code generation, simulation XML).
  • Former Java sources are kept for reference only in src/main/java-reference/ (not compiled).
  • Tests remain Java under src/test/java/ and run against the Kotlin main code.
  • Behaviour and file format unchanged: .visustruct / XML projects remain compatible.

Internationalization

  • Element editor and common dialogs (zoom, colour, font, element edit) use bundle keys (editor.*, dialog.*) with EN + DE and EN fallback in all 21 UI locales.
  • tools/resync_message_bundles.py rebuilds locale files from Messages_en.properties when VisuStruct-swift is not available locally.
  • tools/translation_aliases.json maps new keys from existing translated Java keys where possible.
  • Full Swift parity still requires a sibling VisuStruct-swift clone and python3 tools/sync_java_messages_from_swift.py.

UI

  • Element editor split pane: one-touch expandable divider (editorSplit).

Build

  • Maven: de.visustruct:visustruct:1.2.3
  • Fat JAR: visustruct-1.2.3.jar (./mvnw packagetarget/)

VisuStruct 1.2.2

Choose a tag to compare

@code4teaching code4teaching released this 15 May 20:53

VisuStruct 1.2.2

Patch release after 1.2.1.

Languages

  • 21 UI languages (aligned with VisuStruct-swift): Settings → Languages only; persisted as uilanguage in visustruct.properties.
  • Settings → Labels (structogram) is for text presets only (Java-like / didactic in menu language) — no duplicate language list.
  • Settings → Simulation… for simulation-specific options (separate from label presets).
  • Bundles synced from the Swift app where keys overlap: python3 tools/sync_java_messages_from_swift.py.

Build / CI

  • GitHub Actions: unit tests no longer fail with java.awt.HeadlessException on CI runners without a display. Drag-and-drop is initialized only when not in headless mode (GraphicsEnvironment.isHeadless()).

Build

  • Maven: de.visustruct:visustruct:1.2.2
  • Fat JAR: visustruct-1.2.2.jar (./mvnw packagetarget/)

VisuStruct 1.2.0

Choose a tag to compare

@code4teaching code4teaching released this 12 May 17:39

VisuStruct 1.2.0

Release after 1.1.4 (GitHub master).

Simulation (Kotlin)

  • Kotlin im Maven-Build (kotlin-stdlib, explizite Quellpfade für stabile Kompilierung).
  • Modell SimulationDocument / SimulationElement / … und XML-Decoder (StructogramXml), kompatibel zum bestehenden .visustruct / <struktogramm>-Format (Swift/Java-Parität).
  • Editor-Brücke: Struktogramm.toSimulationDocument() — gleiche XML-Quelle wie Speichern / Rückgängig (xmlErstellen()).
  • Laufzeit: SimulationEngine mit schrittweiser Ausführung, Simulations-Ansicht (Transport, Variablen, Ausgabe, Eingabe), Diagramm-Hervorhebung (letzter/nächster Schritt).

Build

  • Maven: de.visustruct:visustruct:1.2.0
  • Fat JAR: visustruct-1.2.0.jar (./mvnw packagetarget/)

VisuStruct Java 1.1.4

Choose a tag to compare

@code4teaching code4teaching released this 12 May 15:07

VisuStruct 1.1.4

Release after 1.1.3 (GitHub master).

Diagram canvas

  • View zoom for the diagram: ⌘+ / ⌘− on macOS, Strg+ / Strg− on Windows/Linux (root-pane shortcuts). The logical block layout is unchanged; only the on-screen scale changes.
  • Removed: resizing blocks with the mouse wheel (and the related setting / menu entry / persisted option).

Tabs

  • Unsaved changes: closing a tab (×, middle-click, context menu, or Diagramm schließen) asks to save, discard, or cancel when the diagram is dirty.
  • Dirty indicator is shown on the tab chrome (no * suffix in the title text).

Code maintenance

  • Removed large sections of commented-out legacy code (obsolete helpers, unused fields, dead branches) in Struktogramm, StrTabbedPane, AuswahlPanel, Fallauswahl, StruktogrammElementListe, XMLLeser, and related classes to reduce noise and merge conflicts.

UI & localization (follow-up)

  • Palette: Generate code / Code erzeugen button below the trash control (same dialog as File → Generate source code).
  • Default block text presets: only Java-like and interface language (removed extra German-only packs); settings key elementlabelpreset with migration from legacy elementbeschriftungpreset.
  • i18n: aligned DE / EN / pt_PT structure block names (e.g. loop wording); English palette If wording (no “branch” tooltip).

Build

  • Maven: de.visustruct:visustruct:1.1.4
  • Fat JAR: visustruct-1.1.4.jar (./mvnw packagetarget/)

VisuStruct 1.1.3

Choose a tag to compare

@code4teaching code4teaching released this 11 May 16:09

VisuStruct 1.1.3

Tabs

  • Close diagram tabs via middle-click, tab context menu, and Ctrl+W / Cmd+W (sensible behaviour for the last tab and unsaved changes).
  • Clicking the tab header reliably switches the active diagram; the close control is a label instead of a button so it no longer steals tab-selection clicks.

Palette

  • Trash: left-click deletes the currently selected (yellow-highlighted) block, with the same confirmation dialog as Delete in the context menu. Dragging a block onto the trash still removes it as before.

Code generator

  • Extensions for Java scope and CodeGenRules, including updates to StruktogrammElementListe and CodeErzeuger.

Requirements: Java 17

Run: java -jar visustruct-1.1.3.jar

VisuStruct 1.1.1

Choose a tag to compare

@code4teaching code4teaching released this 26 Apr 17:48

Summary

  • Adds system Print support from the File menu.
  • Updates the palette trash area to use a larger Lucide trash icon.
  • Fixes JavaScript preview opening for local HTML files and prevents duplicate insertion after drag-and-drop from the palette.

Build

  • Version: 1.1.1
  • JAR: visustruct-1.1.1.jar

VisuStruct 1.1

Choose a tag to compare

@code4teaching code4teaching released this 26 Apr 16:54

Summary

  • Adds a Swift-style bottom element editor with focused editing, placeholders, input/output modes, for-loop fields, and switch case controls.
  • Improves code generation for Java, Python, and JavaScript using rules aligned with the SwiftUI version, including input/output handling, typed assignments, for-loop conversion, length handling, and Java snippet/class output.
  • Improves JavaScript export with copy support and a browser runner page that shows console.log output without opening developer tools.
  • Updates the About dialog links: Web points to visustruct.org, GitHub stays on code4teaching/VisuStruct, and Developer points to sebastiao.org.

Build

  • Maven build target: target/visustruct-1.1.jar
  • Verified with ./mvnw package

VisuStruct 1.0.9

Choose a tag to compare

@code4teaching code4teaching released this 26 Apr 15:41

VisuStruct 1.0.9 — release notes

  • Palette: Lucide SVG icons for the element buttons (Statement, Branch, loops, Switch, Break, Call).
  • For loop: multi-part headers are displayed and generated as a single C-style header (start; condition; increment).
  • Java code generation: output: statements are exported as System.out.println(...).
  • Licenses: Lucide attribution added to the About dialog; full Lucide/Feather license text is bundled.

Build artifact: visustruct-1.0.9.jar.

VisuStruct 1.0.8 — JavaScript export & browser preview

Choose a tag to compare

@code4teaching code4teaching released this 12 Apr 15:54

VisuStruct 1.0.8 — release notes

Source code generator

  • JavaScript export (brace syntax like Java); generated output starts with "use strict";.
  • celanguage in visustruct.properties: 0 = Java, 1 = Python, 2 = JavaScript.
  • Generate code dialog: Test in browser (only when JavaScript is selected): confirmation explains that free diagram lines must be valid JS; opens a temporary HTML preview in the default browser (</script> in user code is escaped).
  • Browser preview page: short hint (localized) on how to open the developer console (Safari, Firefox, Chrome, Edge).

Build

  • Maven: de.visustruct:visustruct:1.0.8, artifact visustruct-1.0.8.jar, release also ships visustruct.jar.

VisuStruct 1.0.7 – Python im Quellcode-Generator, mehrsprachiger Dialog

Choose a tag to compare

@code4teaching code4teaching released this 06 Apr 21:59

Quellcode-Generator: Zusätzlich zu Java kann der exportierte Code als Python erzeugt werden (u. a. match / case / case _: für die Mehrfachauswahl; sinnvoll ab Python 3.10).
Dialog „Quellcode erzeugen“ ist mehrsprachig (u. a. Deutsch, Englisch, Portugiesisch); die gewählte Zielsprache wird in visustruct.properties unter celanguage gespeichert (0 = Java, 1 = Python).