I think you might have misunderstood a little, the game loop you have in the master branch is already correct and works as it should, you only need to replace:
engine.render();
//with
engine.render( accumulator / DT );
I tried cloning your git and tested it myself using the game loop below, it ran very smooth and jitter-free.
float accumulator = 0.0f;
//long currentTime = System.currentTimeMillis();
double currentTime = GLFW.glfwGetTime();
while (isRunning && !window.windowShouldClose()) {
// long newTime = System.currentTimeMillis();
// float frameTime = (newTime - currentTime) / 1000.0f;
double newTime = GLFW.glfwGetTime();
double frameTime = newTime - currentTime;
// Avoid spiral of death
if (frameTime > 0.25f) frameTime = 0.25f;
currentTime = newTime;
accumulator += frameTime;
// Logic update
while (accumulator >= DT) {
accumulator -= DT;
engine.update(DT);
}
engine.render(accumulator / DT);
}
Btw I took the liberty to replace System.currentTimeMillis() with GLFW.glfwGetTime() in the code above for best timer accuracy.