Skip to content

v3.3.1 — Hotfix: upgraded installs could lose workout matching

Choose a tag to compare

@platypus45 platypus45 released this 12 Jul 16:54

If you upgraded to v3.3.0 and your plan suddenly filled with identical "Z2 steady" placeholder sessions, or Rematch kept saying "no candidate" — this release is for you, and it repairs the damage automatically.

The root cause

v3.3.0's app package was missing one internal helper the workout-analysis step needs. Fresh installs never noticed (they ship with the analysis pre-computed), but on upgraded installs with an existing workout folder the app tried to re-analyze the library, failed for every file, and recorded "unusable" for all 4,000+ workouts — permanently. From that moment the planner couldn't match ANY workout: every reshuffle failed, and the next automatic recalculation rebuilt your future weeks as empty Z2 placeholders.

Fixed

  • The missing helper is back in the package, and the analysis step now treats "the helper itself is broken" as an installation problem instead of a verdict on your workouts: it keeps the previous analysis and never marks the whole library unusable in one sweep.
  • Poisoned installs heal themselves. On first launch, wrongly-blacklisted workouts are re-analyzed. No manual steps.
  • Plans can no longer be flattened. If the workout pool ever comes back empty, the automatic recalculation refuses to rebuild and keeps your existing plan, telling you why.
  • The mid-plan FTP test is only ever scheduled the day after a rest or easy day — a test on cooked legs reads low and poisons every target built on it. It now also counts as a hard day itself, so the 48-hour spacing rule and the weekly hard-day limit protect the days around it in both directions.
  • The "adjusted" day card tells one story — chart, targets and label all describe the session you'll actually ride.
  • Reshuffle on a thin day retries properly and, when there's genuinely nothing, says the day keeps its zone targets instead of "failed".
  • Manually changing a day's workout type now updates your intervals.icu calendar, and sync errors are logged with the actual reason so a stuck sync is diagnosable.
  • "Download ZWO" works on manually-changed days in the desktop app.
  • Implausible automatic FTP updates are rejected (one tester's profile hit 122W with a real FTP of ~258 — every power target scaled off it). Anything you type yourself is always respected.

Also in this release

  • Send any workout to your intervals.icu calendar. Every workout detail view (planner and library) has a send-to-calendar button — planned sessions go to their day in one click; library workouts get a date picker and stay permanently. Garmin/Wahoo/Hammerhead and MyWhoosh pull the workout with full targets.
  • Help popovers are readable again (they were transparent).

For the tester who hit this

Update, launch once (the library re-analyzes itself), then open the Training Plan tab and press Generate Plan once to rebuild the flattened weeks. Your ride history and settings are untouched. If your FTP shows a wrong low number, correct it once in Settings.

macOS DMG is notarized by Apple — no security prompts.