OK, you mixing up TImeLib and DS3231 libraries somehow.
Change
dayOfWeek = weekday();
Serial.print(dayStr(dayOfWeek)); Serial.println("");
to
// dayOfWeek = weekday();
Serial.print(dayStr(dt.dayOfWeek)); Serial.println("");
and leave TimeLib's weekday() out of it. Didn't you notice the first day printed was "Err", not any Sunday through Saturday? That was my clue to go looking…
Just pass the RTC's dt.dayOfWeek to dayStr.
And now I can say that the DS3231 library has a Zeller's congruence algorithm, so it does, in fact, set the day of week correctly for use with dayStr.
dayStr is the only thing you are using from TimeLib it seems.
HTH
a7