← All articles

How Flowo's Focus Screen Works: One Task and One Timer

By Mykhailo Boichuk · Chief Technology Officer

In short

The Flowo focus screen shows one task title, one countdown and a strip of today's schedule. It finds the task by looking up which scheduled block contains the current time, so a session starts with one tap and no setup. When the session ends, BBMM Technologies saves the elapsed time on the task and the planner subtracts it from the work still owed.

What the focus screen shows

The focus screen in Flowo has four elements: a task title, a line of time, a countdown circle and a strip of today's schedule. The page has no navigation bar and no task list, and vertical scrolling is switched off so that everything sits in one viewport.

  • The title is a single line at 28 points. A long title is cut with an ellipsis.
  • The line under it shows the block's planned start and end before a session, and "Started at" with a clock time once the timer runs.
  • The circle is 272 points wide. The remaining time is set in tabular figures, so the digits hold their position as the seconds change.
  • Three round buttons sit below: skip the phase, start or pause, and stop. The middle one is 68 points across and the outer two are 50.
  • Four 44-point buttons in the header close the screen or open statistics, a freestyle session and timer settings.

The schedule strip draws the day's blocks at 2 points per minute and accepts a pinch from 1 to 15 points per minute. A block never draws narrower than 45 points. Narrow blocks show an icon in place of a label, and the narrowest show a dot. After a manual scroll the strip returns to the current time ten seconds later.

How a session starts

A focus session in Flowo starts from the schedule the planner has already built. When the screen opens it loads today's scheduled blocks, sorts them by start time and finds the block whose interval contains the current moment. That block's parent task is loaded into the timer.

The lookup repeats every minute. If the active block changes while the timer is idle, the new task replaces the old one. A running timer is left alone.

Some moments have no task. A gap of one minute or more between two blocks is drawn as a break, and sleep and meal blocks carry their own labels. With an empty schedule the title reads "Flow".

For work that is outside the plan there is a freestyle sheet. It asks what the person is working on, offers 15, 25, 45 or 60 minutes, and lets them choose a single timer or a pomodoro cycle. Flowo then creates a task in a category named Freestyle so that the time has a record to attach to.

The screen opens from the Tools section in Settings and from an external action named start_focus, which selects the Today tab and presents the focus screen full screen.

How the timer keeps running

The countdown runs in a separate Dart isolate that sends one tick per second to a singleton timer service. Because the service outlives the screen, closing the screen does not reset the session. The screen only attaches a listener when it opens and removes it when it closes.

The defaults are 25 minutes of focus, a 5 minute short break and a 15 minute long break after every fourth session. Breaks start automatically by default. The next focus session waits for a tap by default.

The session is mirrored outside the app. On iOS a Live Activity receives the mode, the remaining time and the progress. On Android a foreground service does the same job and keeps the isolate ticking in the background, so on return the service only refreshes the display. The Dart side accepts four commands from the native side: skip, pause, resume and stop.

How a session ends

A focus phase ends when the countdown reaches zero, when the person skips the phase or when they press stop. In the first two cases the session is saved, the statistics record it and the break is prepared. There is no completion dialog.

Stop saves whatever time has elapsed and returns the timer to its full duration. A session shorter than one second is discarded.

The saved record is a task session with a start time, an end time and a localized note that reads "Focus session". Its length is added to the task's running total. Elapsed time is counted from ticks received while the timer is running, so paused minutes are left out.

Flowo is a planning tool. The focus screen is a timer tied to a schedule, and it measures time spent with the timer running. It does not measure attention.

What the planner does with focus time

Focus time reduces the work Flowo still schedules for a task. The task model computes remaining work as the estimate minus the greater of two numbers: the work confirmed on scheduled blocks and the total recorded by the focus timer.

Taking the greater value avoids counting the same hour twice when a person runs the timer and also confirms the block. On the block side, a completed block counts for its full length and a partial block counts for the minutes reported. Skipped blocks and blocks with no answer count for zero.

Contrast on the gradient

The focus screen sits on a colour gradient, so every text colour is chosen to read against both ends of it. We settled the values by measuring them.

Secondary text uses the primary ink at 85 percent opacity. At 70 percent it measured 4.1 to 1 on the lighter stop of the light theme, which is under the 4.5 to 1 that WCAG level AA asks for body text. At 85 percent it measures 5.3 to 1.

Gap blocks in the schedule strip use the dark surface grey in both themes. The light grey at 30 percent opacity landed at a middle luminance where neither ink colour reached 4.5 to 1.

What is not finished

Two parts of the focus code exist and are not yet connected. We list them so that this description matches the code.

The timer service contains a check for a block that starts within five minutes, and the screen has a banner that says the next task is about to begin. The service is not yet given the day's schedule, so the banner does not appear.

The settings model also carries a strict mode flag that hides the freestyle button. No screen sets that flag today.

Key takeaways

  • The Flowo focus screen loads the task from the scheduled block that contains the current time and rechecks every minute.
  • The countdown ticks once per second in a separate Dart isolate and is owned by a singleton service, so leaving the screen does not reset it.
  • Timer defaults are 25 minutes of focus, 5 and 15 minute breaks, and a long break after every fourth session.
  • A stopped or finished session is saved on the task, and sessions under one second are discarded.
  • Remaining work for the planner is the estimate minus the greater of confirmed block time and focus timer time.
  • Secondary text on the focus gradient was raised from 70 to 85 percent opacity to move contrast from 4.1 to 1 up to 5.3 to 1.

Frequently asked questions

How does Flowo decide which task to show in focus mode?
Flowo loads today's scheduled blocks, sorts them by start time and picks the block whose start and end surround the current time. That block's parent task goes into the timer. The check repeats every minute and only replaces the task while the timer is idle.
Does the Flowo focus timer keep running when the app is closed?
The countdown runs in its own Dart isolate under a singleton service, so moving to another screen does not reset it. On iOS the session is shown as a Live Activity, and on Android a foreground service keeps it running in the background. Both surfaces can send skip, pause, resume and stop back to the app.
What happens to my plan after a focus session in Flowo?
The elapsed time is saved as a session on the task and added to the task's total. The planner then treats remaining work as the estimate minus the greater of confirmed block time and focus time. A task with enough focus time recorded has nothing left to schedule.
Can I use the Flowo focus timer for something that is not in my schedule?
Yes. The freestyle sheet asks for a label and a duration of 15, 25, 45 or 60 minutes, with a choice of a single timer or a pomodoro cycle. Flowo creates a task in a Freestyle category so the session is recorded like any other.
What are the default pomodoro lengths in Flowo?
Focus is 25 minutes, the short break is 5 minutes and the long break is 15 minutes after every fourth session. Breaks start on their own by default, and the next focus session waits for a tap. All of these can be changed in the timer settings.

References

About the author

Mykhailo Boichuk

Chief Technology Officer

Mykhailo builds the systems behind the apps. He works on macOS and iOS performance, and on the sync problems that come with software that has to run offline.