Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
</p>
</div>
<br />
This sorting visualizer offers both visual and auditory demonstrations of sorting algorithms. It features 22 different sorting methods represented through a collection of 27 visuals, including a selection of 3D models. A settings menu is included to enable users to adjust the appearance and functionality of the visualizer.
This sorting visualizer offers both visual and auditory demonstrations of sorting algorithms. It features 22 different sorting methods represented through a collection of 30 visuals, including a selection of 3D models. A settings menu is included to enable users to adjust the appearance and functionality of the visualizer.

<div align="center">
<img src="images/demo.png" alt="Program demo">
Expand Down Expand Up @@ -135,11 +135,14 @@ java -jar target/sorting-visualizer.jar
- Morphing Shell
- Sphere (3D)
- Sphere Hoops (3D)
- Spheric Disparity Lines (3D)
- Disparity Sphere Hoops (3D)
- Cube (3D)
- Cubic Lines (3D)
- Pyramid (3D)
- Plane (3D)
- Disparity Plane (3D)
- Mosaic Squares


* Selecting different color gradients and creating your own
Expand All @@ -156,6 +159,9 @@ java -jar target/sorting-visualizer.jar
* Option to display a comparison table at the end of the execution


* Controlling animation speed


* Muting Sound


Expand Down
8 changes: 7 additions & 1 deletion build
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
#!/bin/sh
# build script for Unix-like systems
# Use: ./build — fast incremental build (no tests, no fat jar)
# ./build release — full clean build with fat jar (for releases)

# ensure Maven wrapper is executable
chmod +x ./mvnw

./mvnw clean package
if [ "$1" = "release" ]; then
./mvnw clean package -Prelease
else
./mvnw package -DskipTests
fi
71 changes: 57 additions & 14 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,32 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.4.2</version>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>io.github.compilerstuck.Control.MainController</mainClass>

Copilot AI Mar 11, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The main build now produces a thin target/sorting-visualizer.jar plus copied dependencies, but the JAR manifest doesn’t include a Class-Path, so java -jar target/sorting-visualizer.jar will not find runtime deps unless users use the provided -cp ... dependency/* launch pattern. If you want the jar to remain runnable via java -jar, consider adding a Class-Path manifest entry (pointing at dependency/*) or using a shading/assembly approach for the default build.

Suggested change
<mainClass>io.github.compilerstuck.Control.MainController</mainClass>
<mainClass>io.github.compilerstuck.Control.MainController</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>dependency/</classpathPrefix>

Copilot uses AI. Check for mistakes.
</manifest>
</archive>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>
io.github.compilerstuck.Control.MainController
</mainClass>
</manifest>
</archive>
<appendAssemblyId>true</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<outputDirectory>${project.build.directory}/dependency</outputDirectory>
<includeScope>runtime</includeScope>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
Expand All @@ -66,6 +72,43 @@
</plugin>
</plugins>
</build>

<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.4.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>
io.github.compilerstuck.Control.MainController
</mainClass>
</manifest>
</archive>
<appendAssemblyId>true</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
Comment on lines +99 to +103

Copilot AI Mar 11, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the release profile, appendAssemblyId is true, so the fat jar will be named sorting-visualizer-jar-with-dependencies.jar (while target/sorting-visualizer.jar remains the thin jar). If release automation / download links expect the runnable artifact to be sorting-visualizer.jar, consider setting appendAssemblyId=false or otherwise aligning the produced filename with the expected release asset name.

Copilot uses AI. Check for mistakes.
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>

<dependencies>
<dependency>
<groupId>com.github.66-m</groupId> <!-- micycle1 fork -->
Expand Down
2 changes: 1 addition & 1 deletion run
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ if [ ! -f ./target/sorting-visualizer.jar ]; then
exit 1
fi

java -jar ./target/sorting-visualizer.jar
java -cp "target/sorting-visualizer.jar:target/dependency/*" io.github.compilerstuck.Control.MainController "$@"
2 changes: 1 addition & 1 deletion run.cmd
Original file line number Diff line number Diff line change
@@ -1 +1 @@
java -jar ./target/sorting-visualizer.jar
java -cp ".\target\sorting-visualizer.jar;.\target\dependency\*" io.github.compilerstuck.Control.MainController
2 changes: 1 addition & 1 deletion run_fullscreen.cmd
Original file line number Diff line number Diff line change
@@ -1 +1 @@
java -jar .\target\sorting-visualizer.jar fullscreen
java -cp ".\target\sorting-visualizer.jar;.\target\dependency\*" io.github.compilerstuck.Control.MainController fullscreen
2 changes: 1 addition & 1 deletion run_portrait.cmd
Original file line number Diff line number Diff line change
@@ -1 +1 @@
java -jar .\target\sorting-visualizer.jar portrait
java -cp ".\target\sorting-visualizer.jar;.\target\dependency\*" io.github.compilerstuck.Control.MainController portrait
Loading
Loading