Skip to content

Releases: BkashJEE/ScreenPolish

v0.4.7

Choose a tag to compare

@github-actions github-actions released this 22 Oct 02:35
fbc1039

Join several takes into one video.

New

Sequences. Library → Make a sequence, then pick takes in the order they should play.

  • Each take keeps its own look, zooms, cuts and captions. A sequence only orders them and joins them.
  • Clip strip: drag to reorder, remove a clip, or open a take in the normal editor. A change to a take shows up in every sequence that uses it.
  • In and out: start or end any clip at the playhead, or play the whole take.
  • Hand-over: a hard cut or a crossfade into the next clip.
  • Preview plays straight through every clip.
  • Export makes one MP4. Each take is rendered exactly as it would export on its own, at the first take's size, then joined.
  • Command line: polish sequence create --out NAME TAKE TAKE..., then polish export NAME.

Nothing changes for single takes.

v0.4.6 — planned captions, recording guide, voiceover, laptop frame, zooms on the click

Choose a tag to compare

@github-actions github-actions released this 19 Oct 08:15
0de72d1

Plan a video with your agent and record with the steps on screen, captions that write themselves, your own voiceover, a laptop frame, and zooms that land on the click.

New

Ready-made looks. Scene → Looks now starts with three you can use straight away:

  • Studio: a bright background, the Star pointer, gliding zooms with motion blur, word-by-word captions.
  • Shorts: 9:16 for Reels and TikTok, punchy zooms, big bold captions.
  • Clean: a quiet background, subtle zooms, plain captions, for docs and tutorials.

Star one to start every new recording with it.

Captions without typing.

  • Record with the microphone under a look that has captions, and the captions are made by themselves the first time you open the take.
  • Captions from a script: write what the video shows, one line per caption, and ScreenPolish times each line to your clicks, or spreads the lines evenly. Works on takes with no sound.

Plan with an agent writes the captions too. Tell Claude Code or Codex what the post is about. It answers with the angle, a shot list, title cards and a caption for each step, and your take opens with those captions in place.

Recording guide. Record a planned take of a window or a region, and the ScreenPolish window stays beside it as your guide. It shows what to do now in large type, the caption that part will carry, and what comes next. Each click moves it on; Back and Next fix a step. The captions land exactly on the steps.

Voiceover. Audio → Voiceover → Record voiceover from here: the take plays while you talk.

  • Captions are made from your voice on your computer, word by word, as soon as you stop.
  • Speed changes and cuts never stretch or chop your voice.
  • Other sound drops while you talk and comes back in the pauses.
  • Your original recording is never changed.

Laptop frame. Scene → Mockup → Laptop puts your recording on a laptop screen, with a camera notch and an aluminium base. Space black or Silver.

Fixes

  • Zooms land on the click. A zoom now starts early enough to be in when you click, instead of catching up afterwards. With the slower zoom styles this was very noticeable.
  • Zooms show what you clicked. Two clicks in different places a moment apart used to share one zoom aimed between them, which could leave both off screen. Now the camera pans from one to the other.
  • Applying a look keeps the frame rate the take was recorded at.

Install

Linux — one command:

curl -fsSL https://github.com/BkashJEE/ScreenPolish/releases/latest/download/ScreenPolish-installer.run -o screenpolish.run
chmod +x screenpolish.run && ./screenpolish.run

Or take the .pacman for Arch and Omarchy, or the .AppImage.

On Omarchy, the bar widget: omarchy plugin add https://github.com/BkashJEE/screenpolish-omarchy-plugin --enable

Windows — if you have 0.4.5, this version arrives by itself: Restart to update appears in the left rail, or it installs when you close the app. Otherwise run ScreenPolish-Setup-0.4.6.exe; it's unsigned, so Windows will warn: More info → Run anyway.
macOS — .dmg or .zip, Intel and Apple Silicon. Unsigned.

ScreenPolish is MIT licensed. The installers bundle ffmpeg, which stays GPL-3.0.

v0.4.5 — caption styles, Looks, clean voice, motion blur, Windows self-update

Choose a tag to compare

@github-actions github-actions released this 15 Oct 10:07
197e8b1

Word-by-word captions, saved looks, cleaner voice, motion blur, and Windows now updates itself.

New

Caption styles. Captions → Style:

  • Box: the line on a dark box, as before.
  • Karaoke: each word lights up as it's said.
  • Bold: big outlined capitals a few words at a time, the current word in your highlight colour.
  • Minimal: white text with a soft shadow.

Export .srt saves a subtitle file timed to your edited video, for YouTube and other players.

Remove filler words. One click cuts every "um" and "uh" the transcriber found, and takes them out of the captions too. Put back restores them. Works on recordings transcribed with this version.

Looks. Scene → Looks saves your style under a name: background, frame, pointer, zoom style, caption style, webcam style and export shape. Apply it to any recording in one click; its cuts, words and timing stay. Star one to start every new recording with it.

Clean up voice. Audio → Clean up voice takes down hiss, hum and keyboard noise and evens out the level, on your computer. Your original microphone recording is never changed.

Screen motion blur. Zoom → Motion blur smears the picture as the camera zooms and pans, and stays sharp when it's still. Off by default; 50% is a good start.

Open a video. Recordings → Open a video brings in an MP4, MOV, MKV or WebM from OBS, a phone or another recorder, and opens it for editing.

More export choices.

  • New shapes: 4:5 for Instagram and LinkedIn feeds, and 4:3 for slides.
  • GIF frame rate, width and a Loop switch.

Webcam controls. Place the bubble anywhere, set its margin and shadow, and mirror it.

Windows updates itself. From this version on, the Windows app downloads new releases in the background. Restart to update appears at the bottom of the left rail, or the update installs when you close the app. It never restarts in the middle of a recording or an export.

Install

Linux — one command:

curl -fsSL https://github.com/BkashJEE/ScreenPolish/releases/latest/download/ScreenPolish-installer.run -o screenpolish.run
chmod +x screenpolish.run && ./screenpolish.run

Or take the .pacman for Arch and Omarchy, or the .AppImage.

On Omarchy, the bar widget: omarchy plugin add https://github.com/BkashJEE/screenpolish-omarchy-plugin --enable

Windows — ScreenPolish-Setup-0.4.5.exe. Unsigned, so Windows will warn: More info → Run anyway. Install this one by hand; later versions arrive by themselves.
macOS — .dmg or .zip, Intel and Apple Silicon. Unsigned.

ScreenPolish is MIT licensed. The installers bundle ffmpeg, which stays GPL-3.0.

v0.4.4 — new pointers, bright backgrounds, clip speed, export fixes

Choose a tag to compare

@github-actions github-actions released this 14 Oct 05:59
426a867

New pointers, brighter backgrounds, clip speed, and two export fixes for anyone whose videos have a slowed-down part.

New

Three new pointers.

  • Agent: a coloured arrow with a white outline, now the default. Pick its colour under Motion → Cursor.
  • Halo: a small dot with a thin ring that floats a moment behind it and tightens on each click.
  • Star: a gold sparkle with a short comet tail and a burst of sparkles on each click.

Capture and the editor now list the same pointers, in the same order.

Glide calms fast, jumpy pointer moves into smooth ones that still land on every click. Spotlight gently dims the recording away from the pointer, so eyes follow it.

Clip speed. Split the timeline around a slow part, select the piece, and pick 0.5×, 1.5×, 2× or 4× in the bar under the video. It eases in and out, so the change doesn't jump.

Click timing. If the screen reacts after the click in your recording, slide Motion → Cursor → Click timing until the click lands as the button changes. It moves the pointer, clicks and zooms together.

Backgrounds.

  • Seven bright new ones: Neon, Prism, Sunburst, Electric, Citrus, Holo and Candy.
  • The panel is now grouped into Bright, Calm, Light and Themes.
  • Your own folder: pictures in Pictures/ScreenPolish show up in the Background panel automatically.

Fixed

Exports could hang forever when a video had a slowed-down part. They now finish.

Exports could fail with "Invalid data" on clips that ease into and out of a speed change.

Tilted frames had jagged edges and faint lines where the picture is drawn in slices. Both are gone.

Planned takes ran too long when started with the main Record button. They now stop at the planned length.

Halo and Star replace click ripples with their own click effect, instead of drawing two rings.

Install

Linux — one command:

curl -fsSL https://github.com/BkashJEE/screenpolish/releases/latest/download/ScreenPolish-installer.run -o screenpolish.run
chmod +x screenpolish.run && ./screenpolish.run

Or take the .pacman for Arch and Omarchy, or the .AppImage.

On Omarchy, the bar widget: omarchy plugin add https://github.com/BkashJEE/screenpolish-omarchy-plugin --enable

Windows — ScreenPolish.Setup.0.4.4.exe. Unsigned, so Windows will warn: More info → Run anyway.
macOS — .dmg or .zip, Intel and Apple Silicon. Unsigned.

ScreenPolish is MIT licensed. The installers bundle ffmpeg, which stays GPL-3.0.

v0.4.3

Choose a tag to compare

@github-actions github-actions released this 09 Oct 06:56
b1a489b

Plan your recording with an AI agent before you press Record, and put animated title cards around it.

New

Plan with an agent. At the top of the Record card, tell the agent you already use what the video is for — "a 30-second demo of exporting a GIF, for X" — and it drafts:

  • the angle to record (screen, window or region) and why,
  • the length and a shot list to follow while recording,
  • the look: aspect, frame rate, pointer, mic, a background,
  • intro and outro cards,
  • a short checklist for before you start.

Ask for changes ("shorter", "vertical"), then press Record this plan: ScreenPolish sets the source, inputs and pointer, counts in, records exactly the planned length and stops by itself, and the take gets the cards, background and shape. Apply only sets everything up without recording. Claude Code and Codex are found automatically; any other command-line agent is one line in plan-agents.json in ScreenPolish's settings folder. The agent runs with its tools off, and ScreenPolish itself still sends nothing anywhere.

Title cards. An intro before the recording and an outro after it — a title, a line under it and up to six steps that arrive one by one, in a calm or bold style, over the video's own background. Add and edit them under Timeline → Title cards, with a live preview; they play in MP4 and GIF exports, with the audio shifted to match.

Fixed

Exported audio ran a few hundredths of a second short of the video. It now matches the video exactly.

The Linux one-command installer was 659 MB, twice the app. It is now the AppImage alone, about half that.

Install

Linux — one command:

curl -fsSL https://github.com/BkashJEE/screenpolish/releases/latest/download/ScreenPolish-installer.run -o screenpolish.run
chmod +x screenpolish.run && ./screenpolish.run

Or take the .pacman for Arch and Omarchy, or the .AppImage.

On Omarchy, the bar widget: omarchy plugin add https://github.com/BkashJEE/screenpolish-omarchy-plugin --enable

Windows — ScreenPolish Setup 0.4.3.exe. Unsigned, so Windows will warn: More info → Run anyway.
macOS — .dmg or .zip, Intel and Apple Silicon. Unsigned.

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 08 Oct 22:18
b7eb785

A patch release for Linux. If you're on 0.4.0, update.

Fixed

Recording could jam the app after a couple of takes. To log clicks, ScreenPolish reads your mouse devices, and every read took one of the 4 threads the app uses for all of its file work. Stopping a recording didn't free them. Devices that rarely send anything — the "passthrough" nodes some wireless receivers add — held their threads for good. After two takes on a machine with three such nodes, all 4 were gone. Each new take then waited 20 seconds before saving, exports sat at 0 bytes forever, and the app couldn't quit.

Each mouse is now read by its own small helper process, which stops the moment the recording does. On the machine where this was found, the same two takes went from a 20-second wait each and an export that never finished to 10 and 15 seconds start to finish.

AI agents couldn't reach ScreenPolish from some hosts. Some agent hosts start MCP servers with a trimmed environment that leaves out the display. The CLI then hung for 30 seconds, and the agent was told a recording might still be running. The MCP server now finds the desktop session itself.

Quitting ScreenPolish didn't last. Asking screenpolish status started the app when it wasn't running, so anything that polled it — like the Omarchy bar widget — brought ScreenPolish back seconds after you quit, and started a full copy of the app every few seconds just to ask. status now answers "not running" without starting anything, and the app keeps a small state file (~/.config/ScreenPolish/cli/state.json) that a bar or script can read with cat.

The one-command Linux installer was missing from 0.4.0, so the install command in the README failed with a 404. It is back, under a name that stays the same from release to release, with SHA256SUMS.txt beside it.

Install

Linux — one command:

curl -fsSL https://github.com/BkashJEE/screenpolish/releases/latest/download/ScreenPolish-installer.run -o screenpolish.run
chmod +x screenpolish.run && ./screenpolish.run

Or take the .pacman for Arch and Omarchy, or the .AppImage.

Windows — ScreenPolish Setup 0.4.1.exe. Unsigned, so Windows will warn: More info → Run anyway.
macOS — .dmg or .zip, Intel and Apple Silicon. Unsigned.

Windows and macOS builds behave as in 0.4.0; these fixes are on the Linux and agent side.

v0.4.0 — MIT, a replay buffer, and the bugs that made it look broken

Choose a tag to compare

@BkashJEE BkashJEE released this 08 Oct 00:24
1d0dd8d

ScreenPolish is now MIT licensed, and this release fixes the three bugs that made the app look broken when it wasn't.

It is MIT now

v0.3.0 was AGPL. Everything from here is MIT — use it, change it, ship it in whatever you like, commercial or not.

The installers still bundle ffmpeg, which is GPL-3.0 and stays that way. That covers the bundled binary, not this project's code; its licence and source are listed in THIRD_PARTY_NOTICES.md.

New

Replay buffer. Hold the last N seconds of the screen in memory, writing nothing until you ask for it. Every other way of recording needs you to decide beforehand that something is worth filming — this one doesn't. You notice the bug, and it's still there.

Start a 30-second buffer from the tray, then Ctrl+Shift+B saves whatever it's holding, from anywhere, and tells you what it wrote. Or from the terminal:

polish replay start --seconds 30
polish replay save
polish replay stop

An MCP server, so an agent can film its own work — start a recording, do the thing, stop, get an MP4 back. Ten tools, including the replay buffer. Setup is in mcp/README.md.

Speed ramps. A speed region can ease in and out instead of changing in a single frame. That step is the most obvious tell that a demo has been edited.

Six more music tracks, now twelve. The new ones run two and a half to three and a half minutes, because a demo outlasts a ninety-second loop. Every note is computed rather than sampled, so nothing is licensed from anyone.

Eight more backgrounds, now nine, plus 20 solid and 25 gradient presets. Mesh washes, a ruled grid and a spotlight, drawn by a script and reproducible from a seed.

Offline captions on Windows and macOS.

Fixed

The CLI started a second copy of the app instead of talking to the first. This was behind a lot of it: exports that hung forever, quit that wouldn't quit, open showing a blank window, the library hanging. Three commands in a row could leave three apps fighting over the same recordings.

Pointer smoothing lagged. The filter could only use the past, so the drawn pointer trailed the real one — about a quarter of a second at full strength. It now runs forwards and then backwards, so the delay of one pass cancels the other: roughly 20 ms, and it no longer varies with how fast you move.

A failed export left a file that looked finished. Exports wrote straight to the final filename, so a 0-byte .mp4 appeared the moment one began and stayed there if it died. They now write to a part file and take the real name only on success — and an export that produced nothing says so instead of saving silence.

The tray icon crashed the Omarchy bar. The icon was republished on every recording state change, which was enough to take quickshell down with it — four times during two short recordings.

The ghost pointer lagged behind your hand on Windows and macOS. Over the recording controls it froze for a quarter of a second and then crawled along at 25 updates a second, so you clicked the stop button while it was still somewhere else. It now catches up in 60 ms, moves 60 times a second, and disappears the moment you switch screens.

A failed MP4 conversion could delete the recording. On Linux a take is saved as screen.mkv and converted when you stop. If the conversion died partway (a full disk, say), the library showed a broken file while the good copy stayed hidden. If it failed before writing anything, the whole folder was deleted, good copy included. The conversion now finishes in a separate file before it takes the real name, and a folder holding the original is never removed. If conversion fails you're told exactly where the take is.

Recording onto a full drive failed silently. Recording now refuses to start below 256 MB free, and warns below 2 GB.

A saved replay could come back half-written, and the tray menu could show the buffer as running after it had stopped.

Electron 41.10.7, which is where the extract-zip advisories actually end.

Install

Linux — .AppImage, or .pacman for Arch.
Windows — ScreenPolish Setup 0.4.0.exe. Unsigned, so Windows will warn: More info → Run anyway.
macOS — .dmg or .zip, Intel and Apple Silicon. Unsigned.

Cursor-free capture on Linux needs gpu-screen-recorder on PATH.

Known

The replay buffer is Linux only — it rides gpu-screen-recorder. There is no replay control inside the editor window; the tray and the shortcut are how you reach it.

v0.3.0 — first public build

Choose a tag to compare

@BkashJEE BkashJEE released this 28 Sep 17:18

v0.3.0 — first public build

The first release of the Omarchy edition.

Install

curl -fsSL https://github.com/BkashJEE/screenpolish-omarchy/releases/latest/download/ScreenPolish-0.3.0-installer.run -o sp.run
chmod +x sp.run
./sp.run

The installer checks your session, asks where to put the app, writes the menu
entry, and offers to install gpu-screen-recorder and add you to the input
group. ./sp.run --uninstall removes exactly what it installed and leaves your
recordings alone.

Prefer a package? ScreenPolish-0.3.0.pacman for Arch and Omarchy,
ScreenPolish-0.3.0.AppImage for anything else.

Windows. Run ScreenPolish-Setup-0.3.0.exe and choose where it goes. It is
not code signed, so SmartScreen says "Windows protected your PC": click
More info, then Run anyway. Defender may also quarantine it. That is
what an unsigned installer looks like, not a broken download.

macOS. Unzip ScreenPolish-0.3.0-mac.zip, move the app where you want it,
and clear the quarantine flag macOS puts on unsigned software:

xattr -dr com.apple.quarantine /Applications/ScreenPolish.app

Without that, macOS reports the app as damaged. It is not. This is an x64
build, so Apple Silicon runs it through Rosetta 2.

Checksums for every file are in SHA256SUMS.txt.

What it does

  • Records a screen, window or region through gpu-screen-recorder: no share
    dialog, and the system cursor never enters the video
  • Builds zooms from the clicks recorded with the take, and glides back out
  • Draws the pointer it recorded: arrow, hand, dot or bobbing, with ripples,
    optional click sounds, and a fade while it rests
  • Cut, split, transitions, silence removal, speed, crop
  • Blur or pixelate, arrows, highlight boxes, text and image overlays
  • Backgrounds, a unified 3D frame, browser/window/phone mockups
  • Webcam bubble with background removal
  • Captions transcribed locally with whisper.cpp and burned in at export
  • MP4 or GIF up to 2160p at 60 fps, in 16:9, 9:16, 1:1 or the source shape
  • A music shelf: drop audio into ~/Music/ScreenPolish and it is one click away
  • record, clip and export from the command line, answering with JSON

Requirements

Wayland, and Hyprland for cursor-free capture — without it, capture falls back
to the desktop portal, which bakes the system cursor into the video. Clicks
need membership of the input group; without it there is no click log and
automatic zoom has nothing to work from. The installer checks both.

Known limits

  • Cursor-free capture is Hyprland only. On Windows and macOS the system
    cursor is captured into the video, so the drawn pointer styles have nothing
    to replace. Recording, zoom, editing, effects and export work everywhere.
  • Offline captions are bundled on Linux only.
  • The Windows and macOS builds are unsigned, and the macOS build is x64.
  • Captions are English, with the bundled base model.
  • Encoding falls back to the CPU where a GPU encoder is unavailable.
  • This build has been tested by one person. Please open issues.

Privacy

Recordings, input logs and projects live in your recordings folder, by default
~/Videos/ScreenPolish. Nothing else is written, nothing is uploaded, and
there is no network code in the app.