Development for the official WCA scramble program
Java JavaScript Python HTML CSS Shell
Failed to load latest commit information.
fonts Add support for per-locale fonts. Jan 11, 2018
git-tools Better instructions for how to create a github personal access token. Jun 28, 2018
hello-winstone Added for tnoodle-android. Dec 25, 2013
lib Update to the latest version of itextpdf 5. Jan 12, 2018
min2phase Expanded ThreeByThreeCubeFewestMovesTest.jy to actually check for Mar 21, 2016
mootools Added for tnoodle-android. Dec 25, 2013
quercus Added for tnoodle-android. Dec 25, 2013
scrambler-interface Update event names to be in line with the latest regulations. Mar 12, 2018
scrambles Change almost all occurrences of "cubing" to "thewca" in light of the Sep 26, 2016
sq12phase Pulled in Chen Shuang's skewb support! There's also more aggressive s… Dec 28, 2013
svglite Added "./tmt jython" command. Jython looks like a pretty cool way to … Jan 5, 2014
threephase Making 1.8 javac happy. Feb 23, 2015
tnoodle-android Rename folders for jitpack, update travis config Mar 28, 2016
tnoodle-ui Start looking at round.scrambleSetCount in addition to round.scramble… Jul 5, 2018
tnoodlejs Trim trailing whitespace. Jan 24, 2018
utils Change date format to use dashes instead of forward slashes. Jan 8, 2018
wca Change WCA release file name to TNoodle-WCA. Oct 14, 2013
web-utils Generate and download zip file in the background, and then present the Jan 13, 2018
webscrambles Update Korean translation. Mar 27, 2018
winstone Update to latest (unreleased) version of urlrewritefilter. Jan 12, 2018
.editorconfig Add an editorconfig file, which is better than lvimrc because it works Dec 19, 2017
.gitignore Hackily integrated tnoodle-ui with the tmt build infrastructure. Please Jan 5, 2018
.jshintrc "./tmt make dist -p timer" now generates a standalone tnt.html file! Jul 8, 2013
.travis.yml Add `./tmt i18n check` command, built on top of wca_i18n gem. Jan 7, 2018
Gemfile Add `./tmt i18n check` command, built on top of wca_i18n gem. Jan 7, 2018
Gemfile.lock Update wca_i18n gem to 0.4.2. Jan 11, 2018
LICENSE GPLv3 Nov 13, 2014 Hackily integrated tnoodle-ui with the tmt build infrastructure. Please Jan 5, 2018 Ported all python code to use python3! I did it all for the SNI support Sep 28, 2013
TODO Checked something off the TODO Sep 29, 2013
bower.json Bumping version number. Jun 28, 2018
jython Cleaned up jython script a bit. Jan 6, 2014
tmt Add TNOODLE_SKIP_TNOODLE_UI to skip building tnoodle-ui when set. Jan 11, 2018
tnoodle.js tnoodlejs updated to v0.13.4 Jun 28, 2018 Dump local and global variables when hitting an exception. Jan 5, 2018 Ported all python code to use python3! I did it all for the SNI support Sep 28, 2013

TNoodle Logo


TNoodle is a collection of speedcubing-related projects, primarily written in Java. In particular, it contains the official WCA scramble program.

Build Status

WCA Scramble Program

The official scramble program for the World Cube Association has been part of the TNoodle project since January 1, 2013. It will contain the sole official scramble program for the foreseeable future.

All WCA official competitions must always use the current version of the official scramble program. This is available from

Note that only the scramble program part of TNoodle is "official". Other TNoodle projects may be convenient for certain uses (including at official competitions), but do not have any official status.

"Scramble Program" vs. "Scrambler"

Officially, TNoodle-WCA is a scramble program, while a scrambler is a human. It is fine to refer to TNoodle as a "scrambler" colloquially, but please try to use the official convention wherever possible.

Project Details

tmt (TNoodleMakeTools) is a python script used to develop TNoodle.


Get a high level view of all the projects that comprise tnoodle by running:

./tmt graph --descriptions

WCA Scramble Program

When you're ready to develop, run the following and then visit http://localhost:2014/scramble/

./tmt make run -p wca

To build a distributable/executable .jar file, run:

./tmt make dist -p wca

You can run the .jar from the commandline using:

java -jar wca/dist/TNoodle-WCA.jar

Important note: You must never use a custom build for any official competitions. Contact the WCA Board and the WRC if you have any questions about this.


First make sure that ./tmt make works. This will involve installing the android sdk and setting up an ANDROID_HOME environment variable.

  • Bump the version number in bower.json.
  • ./tmt release


  • Each project is a full fledged Eclipse project (they each have a .classpath and .project file). Furthermore, the whole tnoodle directory can be opened as an Eclipse workspace. Simply go to File > Import > Existing Projects into Workspace, and enter your tnoodle directory under "Select root directory". Eclipse should automagically detect all the tnoodle projects.
  • tmt is designed to be efficient about recompiling subprojects. It relies upon timestamps of files to only recompile something when it's strictly necessary. If you use an editor like Vim that writes to .swp files at potentially anytime alongside your source code, this will trick tmt into thinking something needs to be recompiled when it really doesn't. My recommendation is to configure your editor to store all these files in a unified directory that is not part of your tnoodle source tree.