Release notes

CycleWingman 1.4.2: a heads-up before it matters

September 25, 2026 · UpFlyDev engineering

cyclewingmanreleaseengineering

CycleWingman has always told you the weather on the morning it arrived. That is useful, and it is also a little late: by the time a rough patch starts, whatever needed her patience is already on the calendar. 1.4.2 moves the warning a couple of days earlier, gives tablets a layout of their own, and takes one last pass over the small things.

What's new

  • Wingman alerts (Wingman+): a heads-up one to three days before a rough patch begins — and before a run of good days, so the alerts are not only bad news. A reminder the evening before a day you planned something. A nudge when the forecast is drifting. Alerts for every partner, and the morning and evening hours are yours to pick.
  • Tablets get their own layout. On an iPad or an Android tablet, Today shows the day beside what to do with it, and the calendar shows the month beside the day you tapped.
  • The tab bar floats everywhere, as the same capsule on every iPhone, on Android and on the web.
  • Translated tabs on iOS, and an App Store page that finally lists all three languages the app speaks.
  • Rate us in Settings: a thumbs up takes you to the store, a thumbs down to a three-question form.
  • Android phones no longer rotate to landscape; tablets still do.
The Wingman alerts card in Settings: warnings before a rough patch and before a good run, two days of warning, plan reminders, forecast drift, every partner, and morning and evening hours
Wingman alerts in Settings

The free heads-ups have not changed: a morning forecast and a warning the night before a red day. What the alerts actually say on a lock screen, in full: “Rough patch in 2 days — anything that needs her patience, do it before then.” Or “Good run starts tomorrow — a few clear days coming, worth putting something in the calendar.”

Every alert is scheduled on your phone. There is still no server, no account and no push service behind any of this — and no notification ever contains your partner's name. When one is about a specific partner, it carries her emoji instead, in every language.

Under the hood

iOS keeps 64 notifications, and does not tell you about the 65th

A phone only holds the 64 soonest pending local notifications per app. Schedule more and iOS drops the rest, silently. Two weeks of mornings and evenings for three partners, plus lead-time warnings and plan reminders, goes past 64 without trying.

So the schedule is capped at 56 — leaving headroom — and when it has to shed something, it sheds another routine morning forecast before an alert that carries news. And there is at most one evening notification per partner per day: a saved plan beats a rough-patch warning, which beats the red-day warning, which beats good news. Before that rule, all four could fire in the same minute.

A plan remembers the colour it was saved against

When you confirm that a new cycle has started, every forecast after that day moves. A date night saved for a green Friday can quietly become an orange one. The reminder the evening before now knows: each plan stores the colour its day had when you saved it, so the reminder can say “the forecast shifted since you planned it” instead of pretending nothing moved.

One breakpoint, one behaviour switch

CycleWingman 1.4.1 on an iPad: the phone layout in a narrow column in the middle of the screen
Before: a phone in the middle
CycleWingman 1.4.2 on an iPad in landscape: the day's forecast on the left, what to do with it and the 5-day outlook on the right
After: the day beside what to do with it

Until now a tablet showed the phone app as a card in the middle of the screen. From 700 pixels wide — an iPad either way round, an Android tablet, a desktop browser — Today, Calendar and Settings run in two columns. The journal, the planner and partner management deliberately stay one column: a paragraph a thousand pixels wide is not an improvement.

Almost all of it is styling behind a single breakpoint. The one thing that behaves differently is the calendar: tap a day on a phone and its details open over the month; on a tablet they open in a panel beside it.

The month grid on the left and the selected day's forecast panel on the right, on an iPad
The month beside the day you picked

Three tab bars that look like one

The old tab bar: a flat strip across the full width of the screen
Before: a flat strip
The new tab bar: a floating rounded capsule with Today, Calendar and Settings
After: a floating capsule

iOS 26 draws its tab bar as a floating glass capsule all by itself. Everywhere else it had to be built to match, three times over: by hand in Swift for iPhones on older iOS, blurred and inset on the web, and opaque on Android — because a backdrop blur stutters in Android's web view, and a capsule that judders is worse than one you cannot see through. All three route through the same navigation and hide in the same places.

The store that said “English”

Two fixes only a Russian or Polish speaker ever saw. The native tab titles on iOS were hard-coded English under an app that was otherwise Russian or Polish; they now come from the same dictionary as everything else and change with the language. And the App Store product page listed a single language while the app spoke three. App Store Connect builds that list from the language folders inside the app bundle — not from the declaration that makes iOS offer a per-app language switch — so the app now carries both.

Asking for a rating without sending anything

The Rate us row in Settings, with a thumbs up and a thumbs down button

CycleWingman's privacy label says Data Not Collected, and a feedback button is exactly the kind of feature that quietly makes that untrue. So neither thumb sends anything. The thumbs up opens the store's own review page; the thumbs down opens a short form in your browser. The app records no vote and attaches nothing — it opens a page, and you decide what to type on it. The day feedback becomes an in-app upload, the app's first rule is broken.

It is also a row you go looking for, never a popup. Asking “Enjoying it?” out of nowhere and sending only the happy answers to the store is review gating, and both stores forbid it for good reason.

An upgrade prompt that tells the truth

The calendar's upgrade prompt: Unlock the full forecast — every day of the month, and alerts days ahead

The calendar's upgrade prompt used to promise “advanced tips & smart reminders”. Neither existed. It now names the two things you actually get, and the paywall lists the alerts as the benefit they are. A paywall that promises something the app does not have is exactly what an honest one-star review is made of.

The build that crashed only for Apple

The first iOS build of 1.4.2 came back from App Review the day it was submitted: it crashed on launch, on both the iPhone and the iPad they tried it on. It had run fine on ours.

All twelve crash logs stopped in the same place, inside UIKit, before a line of our code ran. iOS 27 refuses to launch an app built with its own SDK unless the app manages its window through scenes — the lifecycle Apple introduced years ago and announced would become mandatory. Our app still kept its window the old way, as the Capacitor template ships it, and this was the first build made with the new tools. Our test phone runs iOS 26, where the check does not exist; the version already in the store, built with the older tools, was never affected.

The fix itself is small: the window moved into a scene delegate, which hands links and activities to the same places as before. The lesson is the useful part. Before every archive we now launch the release build on a simulator with the newest iOS — because that is what App Review runs, not what we do.

Get CycleWingman — free, sets up in under a minute, and nothing ever leaves your phone. On both stores.

Download on the App Store Get it on Google Play

Learn more about CycleWingman →