Skip to content

Releases: aadityakumarsah/macflow

FocusFlow 0.15.0

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 25 Oct 08:17

Checking for updates is now a button, not a hidden menu item.

Open FocusFlow and it will offer this update itself.

Two places to check

A button in the toolbar. It fills in and turns green when an update is waiting, so you can see there is one without opening anything.

Settings → Updates. Shows the version you have, a Check for updates button, the outcome of the last check, and an Install and relaunch button when there is something to install. There is a link to the release notes too.

Pressing check also brings back an update you dismissed earlier, rather than leaving it gone until the next launch.

Checking was previously only in the application menu under FocusFlow → Check for Updates…, which is not where anyone looks. That item is still there.

FocusFlow continues to check on its own at launch and every few hours while open. Nothing is ever installed without you pressing a button.

Install

curl -fsSL https://raw.githubusercontent.com/aadityakumarsah/macflow/main/install.sh | bash

macOS 14 or later, Apple silicon.

FocusFlow 0.14.1

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 25 Oct 08:10

Both bugs fixed, and the spotlight is gone.

Open FocusFlow and it will offer this update itself.

Fixed: the 3D camera move was invisible

A move played once, from the start of the trim, and then returned the frame untouched. With the default 2.6-second duration that meant there was nothing to see anywhere past the first few seconds — so choosing a move and looking at the middle of a recording showed exactly nothing.

Moves now spread across the whole clip by default, so the effect is visible wherever the playhead is. The lean is also a little stronger, so the perspective reads without reaching for the slider first.

Run for the whole clip is still a switch — turn it off for a one-shot reveal at the start, which is what Unfold was designed around.

Fixed: typing follow never ran on browser recordings

The browser recording path captured no keypresses at all. Its pointer capture had a mouse sampler and no keyboard monitor, so a tab recording reached the editor with an empty typing list and there was nothing to build a follow from.

It now watches keypresses the same way the native recorder does — only while Chrome is in front, and keeping only the instant a key was pressed, no character and no key code — and hands them over with the rest of the recording.

Removed: spotlight

Dimming everything except a patch looked worse than it helped, so it is off the effects menu. A project that already contains one keeps opening and rendering it; it just cannot be added any more.

Outline, callout, blur and pixelate are unaffected.

Install

curl -fsSL https://raw.githubusercontent.com/aadityakumarsah/macflow/main/install.sh | bash

macOS 14 or later, Apple silicon.

FocusFlow 0.14.0

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 25 Oct 07:24

The frame follows your typing.

Open FocusFlow and it will offer this update itself.

Typing follow

A new effect. While you type, the frame zooms to the line being written and slides horizontally as the caret advances — the motion-graphics treatment, applied automatically to any recording where you typed.

It appears on the timeline as its own Typing effect, so you can move it, resize it or delete it like any other.

Adjustable after the fact

Nothing on a Mac reports where a text caret is. The pointer usually sits still while you type; only the insertion point moves. So FocusFlow anchors a run of typing at the last click before it — where you put the caret — and travels right by an amount standing in for the characters since.

That is an estimate of a position nothing measures, so every part of it is yours to set in Canvas → Typing:

  • Zoom — how close it gets to the line
  • Travel per key — how far it slides per keypress. If the slide runs ahead of or behind your text, this is the dial.
  • Max travel — the furthest it will go from where typing began
  • Hold after — how long it stays before releasing
  • Pause splits run — the silence that ends one run and begins another
  • Easing

Rebuild automatic edit regenerates click zooms and typing follows with your current settings.

About the keystroke data

Following typing means knowing it is happening, which the recorder deliberately did not track — only modifier shortcuts were kept.

It now also records the instant a key was pressed, and nothing else: no character, no key code, nothing from which what you typed could be reconstructed. The privacy promise is unchanged.

Install

curl -fsSL https://raw.githubusercontent.com/aadityakumarsah/macflow/main/install.sh | bash

macOS 14 or later, Apple silicon.

FocusFlow 0.13.0

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 25 Oct 06:52

3D camera moves, with every control on the canvas.

Open FocusFlow and it will offer this update itself.

3D camera moves

Canvas → 3D camera move. The frame leans into perspective and travels through space:

  • Glide across — tilts into perspective and travels across the detail
  • Unfold — opens out of a tilt until it is square to you
  • Pull back — starts close and withdraws to show the whole picture

Each one has focus blur: the edge that recedes softens, so the depth reads as depth rather than as a skewed rectangle.

Everything is adjustable, in the Canvas panel beside the other look controls — no hunting through tabs:

  • Tilt — how far it leans
  • Travel / Distance — how far it moves or withdraws
  • Focus blur — how much the receding edge softens
  • Duration and Easing
  • Run for the whole clip — spread the move across the whole recording instead of playing once and settling

Faster, so it stays smooth

The render chain is long now, so two things changed underneath:

  • The image context is Metal-backed where the hardware allows. The default one falls back to the CPU for parts of a chain this size, which is what made the preview stutter as effects piled up.
  • The focus blur blurs once and fades it in through a gradient instead of using a per-pixel variable blur, which costs many times more for the same look.

A move that has finished playing skips all of it entirely.

Install

curl -fsSL https://raw.githubusercontent.com/aadityakumarsah/macflow/main/install.sh | bash

macOS 14 or later, Apple silicon.

FocusFlow 0.12.0

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 25 Oct 06:38

Scrolling gets a real shutter, and you control it.

Open FocusFlow and it will offer this update itself.

Why scrolling strobed

Motion blur was driven entirely by the camera path — the zooms and moves FocusFlow applies. A scroll moves the page while the viewport stays exactly where it is, so that calculation saw no motion at all and scrolling juddered at whatever the frame rate was.

Turning the old slider up could not help, because the quantity it was scaling was zero.

Smooth scrolling

Scroll blur is now measured from the frames themselves. FocusFlow keeps the last few frames of the recording and mixes the neighbours into each one — a shutter angle in all but name. It is applied to the recording before anything is drawn over it, so the cursor and the window frame stay sharp.

Motion → Smooth scrolling, with:

  • Shutter — how much of the neighbouring frames is mixed in
  • Long shutter — blends two neighbours instead of one, for fast scrolls, at twice the cost per frame

Exporting at 60 fps (Export → Frame rate) smooths it further still.

The old control is now labelled Camera motion blur, which is what it always was. Both work together, and both are yours to set.

Install

curl -fsSL https://raw.githubusercontent.com/aadityakumarsah/macflow/main/install.sh | bash

macOS 14 or later, Apple silicon.

FocusFlow 0.11.2

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 25 Oct 06:26

Updating is fast now, and the download is a third of the size.

Open FocusFlow and it will offer this update itself.

Why it was slow

The download read one byte at a time. URLSession.bytes yields a byte per iteration, so a 19MB disk image meant roughly nineteen million awaits — and because the updater runs on the main actor, every one of them ran on the main thread. The interface was locked for the whole transfer.

Measured on the same file: 2.1 MB/s byte-wise against 6.1 MB/s for a download task, and that understates it because the benchmark was not also driving a frozen UI. It now uses a download task, with progress reported from URLSession's own queue.

And the image was 19MB. Eleven bundled backgrounds shipped as PNG — 15MB of the total, carried by every single update. They are opaque backdrops with no alpha to lose, so they are JPEG now.

before after
backgrounds 15 MB 2.8 MB
disk image 19.3 MB 6.5 MB

Projects saved against an earlier build still resolve their backgrounds: the loader accepts both spellings and the stored reference is unchanged.

Install

curl -fsSL https://raw.githubusercontent.com/aadityakumarsah/macflow/main/install.sh | bash

macOS 14 or later, Apple silicon.

FocusFlow 0.11.1

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 25 Oct 06:08

Recordings stop arriving already decorated.

Open FocusFlow and it will offer this update itself.

No more unasked-for effects

Every third click was being given a spotlight, an outline, or a callout reading "Click", and every text selection a zoom and a spotlight travelling across it together. None of that was chosen — a plain recording arrived dressed up, and the travelling pair was the aimless pan it looked like.

The automatic pass now produces zooms and nothing else. A text selection still earns one steady zoom. Spotlights, outlines and callouts are all still there on the effects rail, where picking one is a decision.

The frame stops wandering

A click zoom followed the pointer outright, so the frame drifted with every small hand movement. It now holds its anchor until the pointer leaves the middle of the viewport, then eases only as far as it must to bring it back. No travel for a nudge; no lost subject for a real move.

Animated backdrop off by default

The animated canvas and the progress line across the frame are off unless you turn them on. They applied to every frame of every recording, which is not something that should be a default.

Everything from 0.11.0 is included: the cursor timing fix, quicker zoom release, colour grades, and Delete / ⌘D / ⌘B.

Install

curl -fsSL https://raw.githubusercontent.com/aadityakumarsah/macflow/main/install.sh | bash

macOS 14 or later, Apple silicon.

FocusFlow 0.11.0

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 25 Oct 06:00

The cursor keeps up now, zooms release sooner, and there are colour grades.

Open FocusFlow and it will offer this update itself.

Fixed: the drawn cursor trailed the real one

The overlay arrived after the thing it was pointing at, which is why a second, smaller pointer looked visible ahead of it.

Pointer positions were timed from the moment capture was requested, but a video's zero is its first frame, which ScreenCaptureKit delivers some way later. Every sample was therefore stamped earlier than the frame it belonged to, and the cursor drew where the pointer had already been. The timeline is now rebased onto the first frame as soon as it arrives.

The web studio had the same error from a different cause — sampling started when the page asked to record, while the browser's recorder starts after that round trip. The page now reports when it is actually rolling.

Quicker release after a click

A click zoom holds for 1.15s instead of 1.45s and settles in 0.6s instead of 0.7s, so the frame starts pulling back sooner without the motion feeling rushed.

Colour grades

Canvas → Colour. Cinematic, Noir, Vintage, Frost, Golden, Midnight, Vivid and Dreamy, each over its own exposure, contrast and vignette.

The grade applies to the recording, not to the background behind it — that background is a colour you chose, and washing it with the grade would be wrong. Rounded corners and the drop shadow survive untouched.

Keyboard

  • Delete — remove the selected effect
  • ⌘D — duplicate it
  • ⌘B — split it at the playhead

Pan

Already gone from the effects on offer. Projects that still contain one keep opening and playing it.

Install

curl -fsSL https://raw.githubusercontent.com/aadityakumarsah/macflow/main/install.sh | bash

macOS 14 or later, Apple silicon.

FocusFlow 0.10.4

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 25 Oct 05:42

FocusFlow 0.10.4 repairs three invisible background presets and adds smoother text-selection motion.

  • Replaced bg.png, bg2.png, and bg7.png with visible artwork in the app and website.
  • Background pickers show a small set first, with a See more control and clearer thumbnails.
  • Automatic edits follow selected text with a gentle zoom and camera slide, then fade out.
  • Spotlight dimming and edge fade are adjustable; the hard bright border is removed.
  • Recordings that already contain a cursor no longer receive a second cursor overlay.

Download the DMG, open it, and drag FocusFlow into Applications. Existing projects remain compatible.

FocusFlow 0.10.3

Choose a tag to compare

@aadityakumarsah aadityakumarsah released this 24 Oct 21:48

Fixes and Improvements

  • Fixed export failures for recordings where audio duration exceeds video duration by trimming audio to match video length
  • Always show cursor overlay - removed the check that hid the cursor when embedded cursor was present, ensuring cursor is always visible in exports
  • Increased default cursor size from 1.25× to 4× for better visibility in recordings
  • Improved background thumbnails:
    • Filtered out 3 empty PNG files (bg, bg2, bg7 have all-zero alpha channels)
    • Added "Show more backgrounds" button to reveal all presets on demand (starts with 8 usable backgrounds)
    • Implemented efficient thumbnail loading using ImageIO (320px cached thumbnails instead of full-size images)
    • Background section now loads much faster and shows only working backgrounds by default

Generated with Devin