Back to home

Changelog

All notable changes to this project are documented here.

v2.31.0

Latest

Text Exit Animation Toggle

Added1 item
  • Text overlay settings now have an Exit On/Off toggle — turning exit off stretches the hold to fill the block so your text stays fully visible until it disappears, no exit animation plays, and your entrance value is preserved if you turn exit back on
Fixed1 item
  • Text timeline inner-section handles now stay reachable when you collapse easeIn or easeOut to zero — dragging the inner boundary back out re-separates the entrance or exit animation instead of shrinking the whole segment

v2.30.1

Spotlight Popout Centering Fix

Fixed1 item
  • Spotlight popout no longer drifts slightly to the right when the composition aspect ratio is 9:16 — it now stays centered on the source in narrow compositions the same way it does in square and wider formats

v2.30.0

Background Glow

Added2 items
  • Added Background Glow in the Background panel — pick a color and dial in one Strength slider to paint a saturated colored halo behind your clip, layered on top of whatever background you already have
  • Added a React to Sound toggle on the Background Glow so the halo pulses on detected music beats in both the editor preview and exported video — works with either a music track you added or the video's own audio (auto-analyzed on demand)

v2.29.5

Landing Page Buy Button Fix

Fixed4 items
  • The Pro buy button on the landing page now opens Polar checkout directly instead of sending you to the dashboard, prompting sign-in first when needed and resuming checkout automatically after login
  • Playback now starts from the true beginning of the edited timeline, so intermissions or freeze segments at the start no longer get skipped after you play to the end and hit play again or refresh back into the editor
  • Music clips can now be extended back into timeline space added at the beginning by a freeze or intermission, instead of getting stuck in a clipped state until you remove and re-add the song
  • Text, zoom, blur, spotlight, and clip-position timeline segments now keep their own draggable range inside intermissions at the start of the timeline instead of stretching back to time zero and getting stuck there
Changed1 item
  • Background picker now groups Solid, Gradient, and Dynamic as the first three tiles so color-style backgrounds sit together ahead of the image presets
Fixed1 item
  • Blur In and Gradient text animations now render correctly in exported videos instead of falling back to plain text
Changed1 item
  • Dragging the outer edges of any timeline segment (text, clip position, spotlight, zoom) now scales the entire block proportionally — easeIn, hold, and easeOut shrink or grow together in one drag instead of requiring separate adjustments

v2.29.4

Text Settings Color Picker Performance

Fixed2 items
  • Text setting color pickers now drag smoothly without lagging the editor when you scrub through shades
  • Changing text colors no longer retriggers heavy font-loading work on every overlay edit, which keeps the settings popup more responsive

v2.29.3

Scramble Text Animation

Added3 items
  • Scramble text animation — characters start as randomized glyphs and progressively decode into the real text from left to right, with a cycling cipher effect during the reveal
  • Blur In text animation — characters start blurred and offset, then progressively deblur and slide into position with staggered left-to-right timing
  • Gradient text animation — animated multi-color gradient scrolls across the text with customizable color stops via the color picker row that appears when selected
Fixed2 items
  • Terminal intermissions now reliably play through to the full extended timeline end instead of intermittently stopping right before the end hold begins
  • Deleting an intermission now pulls text and other timeline-anchored items back into the visible timeline immediately instead of leaving them stranded off the right edge until you interact with them

v2.29.2

Intermission Music Playback Fix

Fixed3 items
  • Background music now plays through intermissions added at the end of the timeline instead of cutting out when the freeze-expanded time passes the clip boundary
  • Terminal intermissions no longer stall the playhead — the freeze timer now activates even when the video element reaches its natural end before crossing detection can fire
  • Music reliably stops when the playhead reaches the end of the full timeline including intermissions, instead of continuing to play past the total duration

v2.29.1

Spotlight & Freeze Timeline Fixes

Fixed10 items
  • Spotlight now follows the clip when the frame position is moved, instead of rendering as if the screen was still centered
  • Export spotlight socket no longer lingers after the popout fades out — both now fade together during the ease-out transition
  • Freeze frames no longer force zoom, blur, spotlight, clip, and text timeline segments to stretch across the whole held range — overlapping timeline items now keep their own size in the editor and playback/export at the visible timeline time you placed them
  • Clicking zoom, blur, spotlight, and clip timeline segments now moves the playhead to the segment's visible timeline position inside freeze frames instead of jumping to the held source frame after the freeze
  • Dragging freeze frames across the timeline no longer gets pinned at the start of an intermission window, so you can move a freeze past intermission ranges more reliably
  • Shrinking a freeze or intermission now pulls later timeline-anchored overlays and effects left with the shorter output timeline instead of leaving them stranded at their old absolute positions
  • Adding a freeze or intermission at the very end of the timeline now extends the timeline duration correctly instead of rendering the new hold past the right edge
  • Music clips now stay aligned to the extended output timeline, so background music keeps playing through freezes and intermissions added at the end when the track still has remaining audio
  • The shared playhead line now stays aligned across timeline rows at the edges, so the top handle no longer drifts out of line with the lower tracks near the start or end of the timeline
  • The first and last timeline ruler labels now stay readable at the edges, and fit-width timelines no longer show a phantom horizontal scrollbar just because the playhead is parked at the end

v2.29.0

Timeline Zoom & Spotlight Polish

Added4 items
  • Timeline zoom — Ctrl+scroll wheel over the timeline to zoom in/out, or use the zoom controls next to the Mute button. Fit button resets to 1x. Playhead auto-scrolls into view during playback
  • Solid color backgrounds — pick any flat color as a video background via the color picker in the background panel, works in both preview and export
  • Video backup now falls back to Cache API when IndexedDB is unavailable, so recordings survive page refresh even with corrupted browser storage
  • Intermission gaps — add a 5-second background-only section at the playhead, resize it down to 3 seconds or longer, and place animated text on it without using clip-only workarounds
Fixed22 items
  • Spotlight popout now moves straight up instead of drifting sideways when the phone mockup is tilted
  • Spotlight popout renders at correct proportions on tilted mockups instead of appearing skewed
  • Spotlight black pocket is clipped to the phone screen so it no longer bleeds past the bezel corners
  • Export spotlight border effects (strong glow, neon pulse, traveling light) now render as soft outward-only diffused glow matching the CSS preview instead of hard border lines
  • Export border radius on spotlight popout now scales proportionally to match the preview at higher resolutions
  • Export no longer freezes the browser — video frames yield to the main thread periodically, and mockup scene canvases are reused across frames to prevent GPU memory exhaustion
  • Ctrl+scroll wheel no longer zooms the browser page
  • Timeline zoom now keeps working after the timeline remounts, so fullscreen toggles and similar editor state changes no longer leave Ctrl+scroll and auto-follow disconnected
  • Dragging a cut handle at the end of a shortened timeline can now reopen collapsed deleted spans instead of getting stuck at the shrunken edge and forcing a full reset
  • Text overlays now stay aligned to their visible timeline position during extended holds, so freeze frames and intermissions no longer throw off preview or export timing
  • Background music now plays smoothly through intermissions instead of chattering from repeated hold-segment resyncs
  • Dragging an intermission edge now keeps the resize handle visually anchored instead of drifting away as the timeline extends
  • Editing intermission text now feels snappier because text changes no longer re-run the full preview stack on every keystroke
  • Clicking a text block on an intermission now moves the playhead to the text's visible timing instead of jumping back to the start of the whole gap
  • Intermissions now live directly on the main cut timeline instead of in a separate extra row, so the editor stays cleaner while keeping the same resize and delete controls
  • Playback now exits intermissions without a brief stall at the end, because the held frame releases back into normal playback without forcing a tiny resume seek
  • The playhead no longer flashes back to the start of an intermission on release, so the end of the gap now transitions forward cleanly
  • Freeze-frame preview now holds on a captured still image during the freeze, which prevents the clip from briefly jumping to the next decoded frame underneath the hold
  • Recently released holds now keep the playhead pinned to the end of the gap until source playback actually advances, removing the last intermission-only playhead flash
  • Intermission controls and title text editing now stay in sync more reliably, with shared duration limits, steadier dismiss behavior, and local drafts that refresh correctly after external text changes
  • Spotlight popouts now stay aligned when no background is selected, so the lifted card matches the visible video area instead of drifting off to the side
  • Tilted spotlight popouts now stay attached to the projected clip surface and lift more naturally forward instead of jumping far upward or sideways

v2.28.1

Spotlight Depth Preview

Changed18 items
  • Phone device mockups can now switch between portrait and landscape orientation, with landscape mobile recordings automatically defaulting to a rotated phone frame and an explicit orientation toggle in the editor when you want to override it
  • The generic fallback phone mockup now uses a more polished device frame with refined metal shading, sensor hardware, and side buttons, so desktop-recorded 9:16 clips no longer feel stuck in a cheap placeholder shell
  • The generated Mobile mockup now uses a simpler two-button side silhouette, so the fallback frame feels cleaner and less busy while still reading like a real device
  • The generic device mockup now appears in the picker with a real rendered Mobile thumbnail instead of an emoji placeholder, and its orientation control now reads Mobile Orientation for cleaner editor copy
  • The generated Mobile mockup now supports portrait and landscape orientations like the image-based phone frames, and its picker thumbnail updates to match the selected orientation
  • The Mobile picker thumbnail now stays portrait and contained inside its card, so switching the actual mockup to landscape no longer breaks the sidebar layout
  • Dynamic backgrounds now include an optional Beat Sync toggle in the editor, so the animated blobs can pulse with detected music beats during preview, video export, and GIF export
  • Spotlight preview now lifts the selected area above a dark cutout instead of showing a mirrored duplicate below it, with the offset and depth tied to spotlight progress so the selected piece actually travels out of the surface and settles back into place while the socket stays fixed behind it
  • Spotlight preview no longer zooms the whole clip first, so the effect reads as a cleaner lifted card instead of a full-screen push-in
  • Spotlight preview cutouts and lifted cards now stay aligned to the source video when the clip is tilted or shown in perspective, the card separation scales more consistently with preview size, the socket edge renders cleaner, and the lifted card now follows the screen's actual tilt direction instead of behaving the same on left- and right-leaning shots
  • Spotlight preview now fully blacks out the source area and still lifts the selected card even when dimming is set to zero, so the effect doesn't disappear when you want a cleaner background
  • Spotlight settings now include depth-of-field controls with radial and directional focus modes, so you can blur the background around a lifted spotlight without switching to clip-position tools
  • Beam transfer now shows a live network globe on desktop and mobile, with symbolic phone-to-editor route lines that hop between relay paths so the handoff keeps feeling active while you're waiting, uploading, or receiving the clip
  • Beam desktop now keeps the QR code clean and scannable before your phone connects, then switches to the live transfer globe once the phone opens the link, with a quick toggle to show the QR again if you need to rescan
  • Beam globe badges now keep their Phone and Editor labels readable in both themes instead of fading into the chip background on some screens
  • The device mockup picker now includes iPhone 17 Pro frames in three colors, grouped into a single card with swatches so the sidebar stays compact
  • iPhone 17 Pro mockups now tuck the video slightly inside the top and bottom display edge and add tiny cleanup masks so the content no longer peeks past the bezel corners
  • The older iPhone mockup is now labeled iPhone 13 in the picker, so it reads more clearly next to the newer iPhone 17 Pro variants
Fixed24 items
  • The generic fallback phone mockup now keeps desktop-recorded 9:16 clips visible in preview, screenshots, GIFs, and exports instead of collapsing to a background-only frame when no PNG bezel asset is involved
  • The generated Mobile mockup now slightly overfills the display under the bezel, which removes the thin bottom seam that could appear from subpixel rounding in preview and export
  • Music clip dragging and trimming now snap to the beat markers shown on the editor timeline instead of the source track's original timestamps
  • Smart Sync now snaps cuts, timing blocks, and auto-added zoom punches against the visible output timeline beat positions instead of mixing source-time edits with output-time beat markers, so beat-based syncing stays tighter after cuts, skips, speed changes, and freeze frames
  • Beat-synced dynamic backgrounds now react to a denser set of detected music accents instead of waiting only for the sparse tracked beat grid, so the blobs start pulsing earlier on songs with obvious impacts before the first major timeline marker
  • The Beat Sync control on dynamic backgrounds now shows a live Analyzing spinner while music beat detection is running, so it no longer feels like the feature is idle when the editor is still preparing beat data
  • Beat detection now analyzes the selected music clip when one is highlighted, instead of always using the first music track on the timeline
  • Detect Beats now falls back to the clip under the playhead and warns when the existing beat data belongs to a different music clip, instead of showing a misleading 0-beat result for the wrong track
  • Running Detect Beats on a new music clip now clears stale beat data from the previous track immediately, so the music timeline no longer gets stuck showing another clip's markers or mismatch warning while reanalyzing
  • Detect Beats now analyzes the selected clip's actual source range with a little padding instead of normalizing against the whole song every time, so trimmed music sections are less likely to come back with misleading no-beat results
  • Beat detection now tracks a steadier beat pulse with better downbeat guesses instead of mostly surfacing isolated energy spikes, so editor sync markers line up more musically on a wider range of songs
  • The music timeline now labels the detected markers as beats and explains that it shows prominent beats and downbeats, instead of describing them as generic drops
  • The Beat Sync control on dynamic backgrounds now reads as Turn On and Turn Off instead of showing the opposite-looking OFF state when the feature is disabled
  • Spotlight depth-of-field preview now updates live while you drag the focus and blur controls, instead of waiting for a separate re-render before showing the change
  • Exported spotlight shots now match the newer preview style more closely, including the fixed black socket, lifted pop-out card, zero-dim support, and the removal of the old spotlight-only push-in and reflection look
  • Preview playback controls now stay in sync when a device mockup is active, so the big play overlay hides during playback and the transport button correctly flips to pause instead of getting stuck on play
  • Timeline playback now scrubs more cleanly while playing, with music respecting real backward drops and deleted cut boundaries skipping ahead without visibly hanging on the cut edge
  • Live playhead drags now coalesce rapid seek updates instead of hammering playback state on every mousemove, which smooths scrubbing and reduces the brief replay lag when music is on the timeline
  • Adding zooms, blur regions, text overlays, spotlights, and clip-position segments at the playhead now uses the correct source-time mapping even after removed cuts, so new timeline effects no longer get squeezed into the cut gap or behave like they were created inside deleted sections
  • Dragging and resizing zoom, blur, text, spotlight, and clip-position blocks across removed cuts now preserves the visible timeline shape instead of shrinking at the cut and stretching again after it crosses the deleted section
  • Clicking zoom, blur, text, spotlight, clip-position, and music timeline blocks now opens their controls again instead of getting swallowed by the post-drag guard after the recent timeline smoothing work
  • Playback timing now anticipates deleted-cut jumps in the editor timeline, so the preview and playhead no longer appear to freeze on removed sections while the raw video time catches up underneath
  • Selecting zoom, blur, text, spotlight, and clip-position blocks after removed cuts now seeks using their visible timeline position instead of their raw source-time position, so their entrance and exit timing lines up with where the block actually sits
  • Zoom, blur, text, spotlight, clip-position, and spotlight depth-of-field preview timing now follows raw source playback time instead of compressed timeline time, so effects placed after removed cuts trigger where they visually sit instead of drifting late by the deleted span

v2.28.0

Editor Save & Navigation Guard

Added2 items
  • The editor now shows a "Save a copy before you start editing" modal the first time you open a new video, with a one-click Save to computer button so you always have the original source file on disk even if browser storage gets cleared
  • The editor now warns you before closing the tab, refreshing, or navigating away when you have a video loaded, so a stray keypress or accidental close doesn't wipe out an edit session
Fixed3 items
  • Beam mobile upload page now strictly accepts a single video — if your phone's picker shows a multi-select UI, only the first clip you pick gets sent
  • The new source-save prompt in the editor now follows your selected app language instead of always appearing in English
  • Editor exit links now warn before sending you to sign-in, billing, admin, or back to the studio, instead of only catching full tab closes and refreshes

v2.27.0

Beam Polish — Landing Page + Friendly Mobile Page

Added1 item
  • Landing page hero now shows a small "Recorded on your phone? Beam it over" link below the main CTAs so first-time visitors can jump straight from a phone recording into the editor
Changed6 items
  • The Beam mobile upload page is now fully on-brand with the ScreenSlick mark, bold typography, and a textured grid backdrop instead of the previous bare white screen
  • Beam mobile page now animates: a gently floating phone icon on the upload card, a shimmer effect on the progress bar while sending, a popping checkmark when the transfer completes, and a subtle shake on the error card
  • Beam mobile page now shows the filename and a clearer big-percentage readout while uploading so you can tell at a glance how close it is to finishing
  • Beam buttons across the app now use a phone-with-broadcasting-waves icon instead of a plain phone, making the action read more clearly as a wireless transfer
  • The landing page Beam link now emits expanding ring waves around the phone icon when you hover, hinting at the broadcasting feel of the feature
  • Beam buttons now show a hand cursor on hover so it's obvious they're clickable, instead of falling back to the default arrow
Fixed1 item
  • Tapping the Beam button on a phone-sized screen now shows a friendly toast explaining that Beam needs a second device, instead of opening a QR code that the same phone can't scan

v2.26.1

Export Direction Match Fix

Fixed5 items
  • Directional depth-of-field exports now match the angle shown in the editor preview instead of rendering on the wrong diagonal
  • Depth-of-field exports now keep a stronger blur intensity so the rendered result matches the editor preview more closely
  • Spacebar play/pause now stays locked to the current timeline position instead of jumping back to the last clicked timeline spot after using the preview or transport controls
  • Text, zoom, blur, spotlight, and clip timeline rows now shift left with the shortened edit after mid-timeline cuts instead of hanging off the right edge
  • Dragging and resizing text, zoom, blur, spotlight, and clip timeline rows now stays aligned with the shortened edit after cuts instead of snapping to the wrong source-time positions

v2.26.0

Beam — Phone to Editor Transfer

Added1 item
  • New Beam button in the recording studio and editor header lets you scan a QR code with your phone and send a video straight into the editor — no email, cables, or cloud drive round-trips

v2.25.0

Subtitle Panel UX Refresh

Fixed1 item
  • Generated subtitles are once again split into short readable lines instead of being merged into one giant paragraph block — long monologues now break on punctuation and natural pauses, with any remaining long sentences sliced into ~80-character chunks
Fixed29 items
  • Background music now previews smoothly even when timeline speed changes make edited video segments play faster or slower than 1x
  • Large text overlays now keep descenders like g and j visible in preview instead of clipping them at the top or bottom of the text box during playback
  • The text overlay emoji picker now opens without flashing the whole settings popover on first use
  • Portrait recordings now fit properly in fullscreen preview instead of blowing up and cropping off part of the composition
  • Portrait clips now stay at their original visual size when you switch the editor canvas to square or landscape, instead of scaling up to fill the new frame
  • iPhone mockup screens now clip to the phone's rounded display corners so the video no longer peeks out behind the bezel in portrait projects
  • iPhone mockups now fill the bottom edge more cleanly again instead of leaving a small gap below the video
  • iPhone mockups now reach the top edge cleanly again instead of leaving a tiny 1px gap above the video
  • iPhone mockups now use a final top-edge alignment nudge so the screen fills the bezel more tightly
  • iPhone mockups now inset the video a hair from the top display edge so anti-aliased frame pixels no longer show a shimmering 1px line
  • iPhone mockups now add a tiny top edge mask inside the display so the last 1px shimmer line is covered cleanly
  • iPhone mockups now also mask the bottom display edge a hair so the frame no longer shows a tiny background leak there
  • Phone mockups now fill their screen cutouts more cleanly so portrait videos don't leave visible gaps inside frames like the Samsung S20 Ultra
  • Phone mockups now stay available for portrait source videos even when you switch the editor canvas to square or wide formats
  • Phone mockups now add a subtle 1px black screen border so the video edge reads more cleanly against the device bezel
  • Samsung S20 Ultra mockups now keep the video a few pixels inside the top and bottom screen edge so the transparent cutout no longer shows a faint leak line
  • Samsung S20 Ultra now uses the newer higher-resolution mockup asset with updated screen-fit measurements so portrait videos line up cleanly in the frame
  • Samsung S20 Ultra mockups now reach the right bezel cleanly instead of leaving a tiny sliver gap beside the video
  • Phone mockup labels are now simplified to just iPhone and Samsung in the picker
  • Clicking a zoom segment on the timeline now reliably reopens its zoom controls instead of leaving the settings hidden
  • The style theme picker now loads without a hydration mismatch or placeholder flash when switching between Brutalist and Luma themes
  • The Pro badge on signed-in profile avatars in the header now sits above the avatar frame instead of getting clipped by the image container
  • Spotlight preview now keeps its tilt effect while drawing the popout at a higher resolution, reducing blur on text and zoomed-in details inside the highlighted area
  • Spotlight exports now preserve the popout tilt effect instead of flattening the highlighted panel during render
  • Spotlight exports now keep the tilt motion continuous from the first frame so the popout no longer jumps from a flat zoom into a tilted position mid-animation
  • Spotlight exports no longer flash mesh seams or a stray corner of the full clip while the tilted popout is easing in
  • Traveling-light spotlight borders in exports now follow the tilted popout more cleanly, with smoother motion and fewer duplicate-looking highlights or grid artifacts
  • Snap now opens Screenshot Studio from a clean clip capture again instead of baking in the editor's current background, border, and shadow styling
  • Compressed exports now use the legacy FFmpeg browser setup again, so the extra compression pass finishes instead of failing after the main render completes
Added5 items
  • Text overlay settings now include a lazy-loaded native emoji picker so you can drop emojis into titles and captions without leaving the editor
  • Screenshot Studio backgrounds can now pull colors directly from the snapped frame for both gradient and dynamic backgrounds
  • Editor settings now let you switch an existing project between Original, 16:9, 9:16, and 1:1 canvas ratios without rerecording
  • Portrait projects can now use an iPhone mockup frame that fits 9:16 videos directly into a phone device bezel
  • Portrait projects now also include a Samsung S20 Ultra mockup option for phone-style demos
Changed7 items
  • Removed the static "Reading now" preview box from the transcript panel — the panel now auto-scrolls to keep the currently spoken subtitle centered while the video plays, just like the legacy editor
  • Auto-scroll politely steps aside for 3 seconds whenever you manually scroll the transcript so it never fights you while you're reviewing or editing
  • Voiceover controls are now hidden inside a collapsible "Text-to-Speech" accordion at the top of the transcript panel instead of stacked below the segments, so a long voice list no longer pushes the subtitles down
  • Subtitle styling controls have moved into a new "Sub Settings" button pinned to the bottom of the subtitles sidebar that expands upward when clicked, keeping them reachable even when your transcript is hundreds of lines long
  • Clicking the gradient background tile now randomizes the preset in both the editor sidebar and Screenshot Studio, while both panels now share matching background controls like custom uploads and editable color palettes
  • Regular zooms on portrait and square recordings now push in on the whole device and bias toward the clicked area instead of cropping hard into the raw video
  • Canvas ratio controls in the editor now use clearer shape buttons with the ratio values shown directly inside each option instead of a harder-to-scan dropdown

v2.24.0

Device Mockup Frames

Added4 items
  • Place your video inside a MacBook Air or MacBook Pro 16 device frame directly in the editor
  • Device mockups work with all existing backgrounds, padding, and clip animation settings
  • Mockup frames render in both video exports and GIF exports
  • Corner-wrap text automatically adapts to mockup bounds, wrapping around the device lid at top corners and running vertically along the sides for bottom corners
Changed2 items
  • Clip Frame controls (border radius, shadow, glass border) are hidden when a device mockup is active since the frame handles the styling
  • Text overlay layout recalculates immediately when switching between mockups

v2.23.1

Freeze Frame Timeline Sync Fixes

Changed2 items
  • Editor timeline now grows with freeze-frame holds, so adding a 20-second freeze extends the visible project length by 20 seconds
  • Screenshot Studio now starts with a much lighter depth-of-field blur so new snaps look clearer by default
Fixed27 items
  • Fullscreen scrubber, playhead timing, and freeze track seeking now stay aligned with freeze-frame output time instead of the raw source duration
  • Background music timing now stays in sync with freeze frames in both preview playback and exported videos
  • Music clips can now stretch across freeze-frame holds instead of stopping at the original source-video length
  • Subtitles now remain aligned after freeze frames in both the editor preview and exported videos
  • Imported timeline presets now restore freeze-frame segments correctly
  • Text, zoom, blur, spotlight, and clip timeline rows now stay visually locked to the freeze-aware playhead instead of drifting after added holds
  • Text, zoom, blur, spotlight, and clip tracks now keep their own independent durations when you resize a freeze frame instead of stretching with the hold
  • Playback controls and timeline seeking now stay responsive while the playhead is inside a freeze frame instead of ignoring pause and scrub actions until the hold finishes
  • Freeze-frame holds no longer show an extra mini playhead in the freeze row, and the held frame now stays pinned more cleanly instead of wobbling between nearby frames
  • You can now park the playhead anywhere inside a freeze-frame hold to edit overlapping text and timeline items without it snapping back to the freeze start
  • Resuming playback from the middle of a freeze-frame hold now continues from that exact point, and background music stays in sync instead of waiting until the hold ends
  • The main timeline playhead no longer flashes to the end of a freeze block for a frame when playback first enters the hold
  • The main ruler playhead can now be dragged anywhere inside a freeze-frame hold so you can inspect and edit animated items that overlap the frozen section
  • Later freeze-frame holds now exit cleanly without briefly replaying the start of the frozen moment or its soundtrack before continuing
  • Scrubbing the timeline during playback now lands correctly inside freeze-frame holds instead of snapping to their start or end boundaries
  • Music clips on the timeline now visually clip to the output duration instead of overflowing past deleted segments
  • Uploading a new video now fully resets the editor instead of carrying over edits from the previous video
  • Recordings now keep screen text sharper in demo and screen capture modes, especially when padding is enabled around the clip
  • Padded video draws now use higher-quality scaling so clip edges and on-screen text stay cleaner instead of turning soft or garbled
  • Device mockup frames now render above the clip preview so newly added laptop mockups mask the screen edges instead of letting content spill past the bezel
  • MacBook Air and MacBook Pro mockup screen bounds now fit their frame assets more tightly, reducing corner bleed and edge overflow
  • MacBook Air and MacBook Pro mockups now use transparent screen cutouts plus a small bezel overscan so the video stays visible while corner and edge gaps are masked cleanly
  • Snap screenshots now include the active device mockup and current clip composition instead of always falling back to the raw video frame
  • Snap screenshots with device mockups now keep the mockup on transparency instead of baking the editor backdrop into a white rectangular slab behind it
  • Screenshot Studio mockup snaps now cast their shadow from the device silhouette instead of a flat rectangular card under the laptop
  • Elastic and particle text animations no longer get clipped by the overlay box while bouncing in the editor preview
  • Corner-wrap text now hugs MacBook mockup bounds in both preview and export instead of drifting out toward the larger composition area

v2.23.0

Luma Theme Overhaul, Track Colors & Editor UX

Added4 items
  • Dedicated track color system — Zoom (blue), Blur (pink), Text (green), Spotlight (amber), and Clip (purple) each have a unique color on the timeline, making it easy to tell tracks apart at a glance
  • Colored dot indicators on each tool button in the sidebar matching its track color
  • Slice button moved to the playback transport bar next to Play and Snap for quicker access
  • Backup folder section now shows a helpful message on browsers that don't support the File System Access API (e.g. Brave, Firefox) instead of hiding it entirely
Changed16 items
  • Luma theme redesigned with Tella-inspired aesthetic — normal case text (no uppercase), tighter heading tracking, pill-shaped buttons and badges, glassmorphism header with backdrop-blur, and no section divider borders
  • Luma theme color palette changed from violet/stone to warm teal primary with amber accents and cream base tones
  • Luma theme radius increased from 0.875rem to 1.5rem for rounder cards and UI elements
  • Luma theme fonts and shadows are now clearly distinct from brutalist — Figtree font, soft shadows, and thin 1px borders vs Noto Sans, hard-offset shadows, and thick 4px borders
  • Theme-aware border weights — added --border-weight, --border-weight-sm, and --divider-weight CSS variables so borders adapt automatically between themes
  • Heading highlights use .text-highlight and .text-highlight-alt CSS classes that switch between inverted blocks (brutalist) and colored rounded pills (luma)
  • Inverted badges use .badge-inverted class — solid black in brutalist, primary-colored pills in luma
  • Style theme picker now available on all pages — recording studio and editor headers include it alongside the dark/light toggle
  • All tool buttons in the sidebar now display in a single column so labels like Spotlight and Clip Position are fully readable
  • Playback transport button order changed to Play → Snap → Slice → Time display
  • Snap and Slice buttons now use theme-aware border widths and border radius
  • Background picker tiles are now 4 per row with square aspect ratio, thinner borders, and tighter gap — inspired by Screen Studio's compact wallpaper grid
  • Background preset and gradient picker buttons use rounded-md for subtle rounding in luma theme
  • Recording without a background now uses the screen's native aspect ratio (e.g. 16:10 on MacBook Pro) instead of forcing 16:9 — no black bars, no stretching
  • Editor composition frame adapts to the video's native aspect ratio when a background is added, so padding is uniform on all sides
  • Export canvas scales up proportionally when padding is enabled so the video content area still gets the full target resolution — no more blurry exports with backgrounds
Fixed15 items
  • Exported floor reflections now keep a clearer gap below tilted clips, matching the preview much more closely instead of looking stuck to the frame
  • Editor playback controls and center overlay now stay in sync with the actual video element again, so the pause icon and middle play button no longer get stuck in the wrong state while video is already playing
  • Spotlight draw selection now stays aligned with the cursor more reliably across different desktop setups instead of drifting diagonally while you drag
  • Recording Studio camera border color changes now feel more responsive because the live canvas compositing preview updates on a deferred camera style value instead of blocking the color input drag
  • Text overlay border color picker now uses the same debounced drag behavior as the smoother color controls elsewhere in the app
  • Sign-in code entry is now properly labeled for screen readers, with grouped OTP semantics and per-digit labels
  • Clip motion in the editor now caches clip-frame measurements outside the animation loop, reducing layout work during zoom and tilt playback
  • Zoom click placement was offset from the actual click position — now uses normalized video coordinates consistent with blur and spotlight tools
  • Blur and spotlight draw previews were positioned incorrectly when a background was enabled — now uses video content rect accounting for object-contain letterboxing
  • Blur, spotlight, and zoom coordinate mapping now accounts for CSS object-contain on the video element, fixing offset issues on non-16:9 recordings
  • Clip position entrance/exit animation dropdowns were closing immediately without selecting — fixed by allowing Radix Select portal clicks to pass through the outside-click dismiss handler
  • Spotlight timeline floating controls had the same portal dismiss issue — fixed with the same Radix portal detection
  • Theme bootstrap script no longer triggers a React console error about script tags — replaced next/script with a raw inline script in <head>
  • sessionStorage access in VideoEditor no longer throws during server-side rendering on some browsers
  • Luma dark mode timeline labels were too dim — bumped muted-foreground lightness from 0.65 to 0.75
Removed2 items
  • Slice button removed from the right sidebar (moved to playback controls)
  • Quick Edits section label removed from sidebar — reset button appears inline when cuts exist

v2.22.0

Screenshot, Recording UX & Shadow Improvements

Added13 items
  • Screenshot button ('Snap') — captures the current frame at full resolution and opens Screenshot Studio for copy/download
  • Screenshot Studio modal — polish a snapped frame with tilt, roll, zoom, position, and depth-of-field before copying or downloading
  • Start Recording button moved to the toolbar row next to format/layout settings — always visible without scrolling on smaller screens
  • Upload Video button added to both the recording studio and editor headers
  • Pro badge on user avatar (yellow with black text) when the user has a paid license
  • FeedbackBasket widget for in-app feedback collection
  • Pricing section, About page, and footer with backlinks on the landing page
  • Editor preview image in the landing page hero section (1.5MB PNG compressed to 65KB WebP)
  • Brutalist grid pattern in the hero background
  • View transitions on page navigation using Next.js ViewTransition API
  • SEO metadata, sitemap, web manifest, and OpenGraph banner
  • Global clip entrance/exit animation controls in the sidebar — slide or fade the whole video clip in/out independently of per-segment timeline animations
  • Fullscreen scrub bar that respects deleted segments and speed changes — click to seek within playable content only
Changed13 items
  • Clip segments now support close-up shot scaling plus radial or directional depth-of-field for more cinematic framing on individual moments
  • Clip segment depth-of-field controls — add radial or directional focus looks to individual clip-position shots with smooth ease-in and ease-out
  • Clip shadow now uses 3 layered passes (contact + depth + ambient) for a more realistic 'floating above surface' effect
  • Screenshot Studio now opens from Snap instead of copying immediately, so you can polish the shot before copying or downloading
  • Screenshot Studio now supports much closer hero-shot zoom levels and mouse-wheel zooming in the preview
  • Facehash avatar used as fallback when user has no profile image, with Google photo preferred when available
  • Landing page hero text updated — 'No account needed to start' instead of 'No login'
  • Landing page copy now speaks more clearly to product demos, tutorials, uploads, privacy, Screenshot Studio, and music syncing instead of sounding like a generic recorder
  • Landing page navigation now includes a FAQ link, and the homepage now answers the most common workflow, privacy, pricing, screenshots, and music questions directly in a new FAQ section
  • Landing page FAQ now also clarifies that Chrome is the best browser for reliable local recording saves and that future desktop versions will honor the same purchase
  • Shared SiteHeader component across landing, about, and changelog pages for consistent navigation
  • GIF output resolution increased from 480p to 720p for better quality
  • GIF range overlay on timeline now uses emerald green for better visibility
Fixed41 items
  • Recording Studio top format/layout/position/gesture controls now stay in a cleaner wrapped toolbar instead of forcing a horizontal scroller over the preview, and Start Recording stands out more clearly as the primary action
  • Recording Studio now shows a proper in-preview Select Screen prompt instead of a half-empty canvas when a screen mode is selected but no screen source is active
  • Recording Studio gestures now let regular layout/position gestures bring you back out of Camera Only without needing a separate thumbs-down reset
  • Recording Studio gesture detection now follows live camera frames more smoothly and only restores a screen mode when a screen source is actually available
  • Recording Studio now asks for an optional backup folder when you enter the recording workspace instead of interrupting the actual Start Recording click, and screen modes no longer open the browser screen picker until you really need it
  • Screenshot captures now match the editor preview timing and retimed subtitles before opening Screenshot Studio
  • Screenshot Studio now keeps the background static while tilting and zooming a separate clip card, with mouse-wheel zoom and multiple depth-of-field modes for close-up mockups
  • Screenshot Studio now captures the clip flat and upright first, then rebuilds the final shot in the modal with its own background, padding, border, shadow, tilt, and depth-of-field styling
  • Screenshot Studio now uses a clean neutral workspace and exports fixed 16:9 shots for more consistent hero images
  • Screenshot Studio depth-of-field now blurs the full scene cleanly without exposing the mask at the edges during stronger tilts
  • Screenshot Studio scene controls no longer flash the preview black while adjusting padding, border, shadow, or glass border, and dynamic/gradient backgrounds stay available in the studio
  • Screenshot Studio glass borders now render cleanly without triangle seam artifacts, and the card can be dragged directly in the preview
  • Screenshot Studio glass borders now stay attached to the card edge instead of floating away during heavier tilts
  • Screenshot Studio mouse-wheel zoom now uses a non-passive preview listener so scrolling no longer throws console warnings
  • Screenshot Studio glass borders now keep their tilt alignment while avoiding seam patterns in the translucent rim
  • Screenshot Studio now gives directional focus a simple 0–360° angle control and exposes dynamic/gradient background controls inside the modal
  • Screenshot Studio dynamic backgrounds now animate live in the preview and keep the current motion phase when copying or downloading
  • Screenshot Studio directional depth-of-field now rotates correctly with the angle control instead of appearing stuck in one direction
  • Screenshot Studio controls now feel much snappier while dragging sliders or camera pads by coalescing preview redraws and using a lighter live render during active adjustments
  • Clips Only now hides only the base video between clip segments while keeping music playback continuous and still preserving text-only moments
  • Clip close-up scaling now stays consistent in paused preview and no longer throws text overlay sizing off while you edit
  • Regenerating AI voiceover now immediately updates preview playback without needing to toggle voiceover off and back on
  • Video depth-of-field export now matches the preview more closely instead of over-blurring most of the shot
  • Directional depth-of-field exports now use the same centered focus band as the preview instead of drifting from hidden focus coordinates
  • Dynamic and gradient background libraries now include new light and pastel presets for brighter scenes and screenshot compositions
  • Spotlight dimming now covers the whole exported scene like the preview instead of being clipped to the moved video area
  • Uploading a different video into the editor now clears stale timeline state first, restores that video's own saved setup when available, and no longer lets old cuts or preview timing make the new file fade out early
  • Editor actions sidebar now groups timeline actions more clearly and includes a one-click Clear Timeline reset like the legacy workflow
  • Recording Studio now keeps Start Recording pinned in the top-right while layout/position/gesture controls stay visible as disabled placeholders when unavailable
  • Clip-only exports now keep text and subtitle overlays visible even when the base video is hidden between clip segments
  • Timeline popovers now flip inward near the left and right edges so clip, zoom, blur, text, and spotlight controls stay visible instead of hiding under the surrounding UI
  • Uploading the same video again now reloads its saved editor state more reliably by matching uploads to a stable per-video key instead of a one-off file timestamp
  • Landing page now calls out Screenshot Studio and beat-synced music more explicitly, and the recording section headline reflects the actual record-or-upload workflow
  • Cut timeline ruler now gives time labels more breathing room on longer edits so the values stay readable instead of feeling crushed together
  • Text overlay editing no longer shows the dead 'Drag on preview' placeholder chip for freeform text
  • Spotlight popouts now stay anchored to moved clips in preview again, with a stronger lift animation and a brighter traveling-light border in exports
  • Screenshot Studio now falls back cleanly when a snapped blob cannot be decoded through createImageBitmap, so the captured image still loads in the modal
  • Screenshot Studio now opens snapped shots from a ready clip image first, so the modal no longer comes up blank while waiting on a second decode step
  • Screenshot Studio camera controls now show cleaner rounded tilt and position values instead of noisy decimal drift while you drag
  • Theme bootstrapping now uses a proper Next.js beforeInteractive script again, avoiding client render warnings in the app shell
  • Admin menu visibility now respects users with the real admin role immediately again, while still supporting env-based admin access

v2.21.1

Checkout Confirmation Fixes

Fixed7 items
  • Checkout success now refreshes account status without getting stuck in a page-reload loop
  • Older Polar customers can now unlock Pro after a one-time purchase even if their account link needs to be repaired by email
  • Pro access is no longer revoked as soon as a refund is created — only fully refunded Pro orders remove access
  • Tilted exports now keep the same clip shadow treatment as the editor preview
  • Tilted clip shadows now export without the visible projection grid artifacts behind the video
  • Exported glass borders now stay translucent like the editor preview instead of tinting the clip itself
  • Editor sidebar now includes whole-clip position and tilt pads for framing the entire video without adding a clip segment, with free 2D dragging like the legacy editor

v2.21.0

GIF Export with Effects

Added6 items
  • GIF export — select a clip range on the timeline and generate a GIF with all editor effects applied (backgrounds, text, spotlight, subtitles, zoom, blur)
  • GIF range overlay on the timeline with draggable handles — move the whole range or resize from either end
  • GIF mode toggle in the right sidebar with usage instructions when active
  • Generate GIF button with progress percentage below the timeline
  • Cancellation support during GIF generation
  • Warning for GIFs longer than 30 seconds
Changed5 items
  • GIF output renders at 720p (downscaled from source) for reasonable file sizes
  • GIF frames use the full export compositing pipeline — not raw video like the legacy version
  • Background image and font loading run in parallel during GIF generation (async-parallel best practice)
  • Editor hero image on landing page compressed from 1.5MB PNG to 65KB WebP
  • FeedbackBasket widget loaded via next/script with afterInteractive strategy

v2.20.0

Auth, Payments & Pro Exports

Added13 items
  • Sign in with Google OAuth or email OTP (passwordless 6-digit code)
  • Polar integration for one-time Pro license purchase ($29.99 early bird)
  • Upgrade modal with pricing when free users export — option to continue with watermark or upgrade
  • Watermark on exported videos for free users — 'Made with ScreenSlick' pill in bottom-right corner
  • User avatar menu in the editor and recording studio — billing portal, sign out
  • Sign In button on editor and recording studio nav bars when not logged in
  • Checkout success page with pro status polling before redirect
  • Pricing section on landing page with Free vs Pro comparison
  • About page with project backstory and links to other projects
  • Shared site header component across landing, about, and changelog pages
  • Footer with product links, other projects (ProntoShoot, FeedbackBasket, DoodleAI), and social links
  • View transitions on page navigation (fade + slide) using Next.js 16.2 ViewTransition API
  • OTP email delivery via ZeptoMail with branded ScreenSlick template
Changed7 items
  • Export button now checks auth — redirects to login if not signed in, shows upgrade modal if free
  • Download button renamed to 'Download Raw' to distinguish from edited export
  • Removed small download button from playback controls (redundant with top bar)
  • Export dialog labels simplified — 'Encoding Quality' → 'Quality', 'Compress with FFmpeg Web' → 'Compress Video'
  • Resolution descriptions rewritten in plain language ('Recommended for most uses' instead of '1920×1080')
  • Landing page CTA buttons now use consistent height and styling
  • Logout stays on the current page instead of redirecting away
Fixed10 items
  • Open redirect vulnerability — callbackUrl now restricted to same-origin relative paths
  • Pro state race condition — checkout success page polls until purchase is confirmed before redirecting
  • Export module (export-video) now loaded dynamically only when user clicks export (bundle-conditional)
  • Subtitle panel components dynamically imported — only loaded when subtitles tab is active
  • Cursor indicator, blur/spotlight draw previews converted from useState to refs — no re-renders on mousemove
  • Subtitle segments sync uses render-time derivation instead of useEffect (eliminates double-render)
  • TTS hook refactored from 13 useState calls to useReducer for batched state updates
  • Layout getLocale/getMessages now fetched in parallel with Promise.all
  • Production recording start no longer fails from a MediaBunny format bundling mismatch
  • Prisma client uses direct connection URL for migrations, pooled URL for runtime

v2.19.0

Dynamic & Gradient Backgrounds, Corner Wrap Fixes, Beat Markers

Added5 items
  • Dynamic animated backgrounds — organic lava-lamp style blobs with 6 presets (Lava, Aurora, Sunset, Ocean, Neon, Minimal), customizable colors, speed, and softness
  • Gradient backgrounds — static mesh gradients with 6 presets (Warm, Cool, Sunset, Forest, Berry, Mono) and a 'Pick from Video' button that samples dominant colors from the current video frame
  • Beat detection markers now show descriptive tooltips on hover with beat timing and intensity
  • Smart Sync can now snap cuts, text timing, clip-position timing, and optional zoom punches to the visible beat positions on the music timeline
  • Cut and Detect Beats buttons now have multi-line tooltips explaining what they do
Fixed6 items
  • Corner-wrap text now correctly hugs the clip border regardless of padding amount
  • Corner-wrap text renders on the outside of the clip border instead of overlapping inward
  • Corner-wrap corner presets (top-left, top-right, etc.) now center text on the actual corner arc
  • Corner-wrap text no longer gets cropped at the top-left seam point
  • Export border radius now matches the preview by using clip dimensions instead of canvas dimensions
  • Tilted clip corner-wrap text in exports now uses per-character 3D projection to match CSS preview exactly
Changed4 items
  • Beat markers are now orange/amber with higher contrast instead of barely-visible grey lines
  • Strong beat drops are thicker and more prominent than regular beats
  • Background blur slider is hidden for dynamic and gradient backgrounds since they have built-in softness controls
  • Dynamic background Safari fallback renders at reduced resolution with upscaling instead of relying on unsupported ctx.filter

v2.18.0

Editor Layout Cleanup

Changed91 items
  • The editor now uses a wider three-column layout with left settings, center preview, and a new right actions rail
  • Crowded timeline buttons moved out of the bottom strip so the timeline reads more clearly
  • Segment tools, edit modes, and preset import/export now live in the right sidebar for quicker scanning
  • The editor workspace now stretches more like the recording studio instead of feeling narrower after recording
  • Selected cut controls now appear above the timeline so speed, mute, and delete edits stay focused near the clip you clicked
  • The sidebars keep a steadier footprint while editing because cut-specific controls no longer expand and collapse the actions rail
  • The preview area now gets more room and fits 16:9 compositions more cleanly instead of feeling cropped at the bottom
  • The editor now keeps more of the timeline stack visible when a segment is selected by trimming the preview height budget
  • Timeline stats now sit with the playback controls and the segment tools area keeps a reserved height so selections no longer make the editor jump
  • Timeline lanes are slightly shorter so more tracks fit on screen at once
  • Subtitle controls no longer push the left sidebar into a horizontal scrollbar when longer model names are selected
  • Clip-position sections now ease their opacity in and out by default so transitions from the regular video feel smoother even without a manual fade animation
  • Delete confirmation now actually removes the selected timeline item instead of only closing the dialog
  • Clicking a zoom, blur, text, spotlight, clip-position, or music item now clears the previous timeline selection so Delete targets the thing you just selected
  • Switching tools now clears lingering edit modes, and new zoom or music items take over selection immediately so Delete stays predictable
  • Segment controls now use a fixed-height layout so changing speed or mute states no longer nudges the timeline stack
  • Default clip-scene transitions now blend more clearly from the regular video into the clip state instead of feeling abrupt
  • Clicking the same timeline item now keeps it selected; selections clear only when you click elsewhere or choose a different target
  • The segment-tools strip now shows disabled controls when nothing is selected so the editor always looks ready for edit actions
  • Text overlays now include a stronger explode animation that implodes on entry and blasts outward on exit for more dramatic motion
  • Text overlay popovers now dismiss when you click elsewhere in the preview, whether they were opened from the preview or the timeline
  • Subtitle editing now lives in the right sidebar with its own dedicated tab next to Actions for a more natural editing flow
  • The subtitles tab now shows a live processing spinner while transcription or voiceover work is still running
  • The transcript sidebar now highlights the currently spoken subtitle and surfaces a live Reading now panel while the video plays
  • Full AI voiceover generation now composes segment audio on the timeline more reliably so longer lines are less likely to cut off early between subtitle sections
  • When AI voiceover playback is enabled, subtitle timing now follows the generated voice timing more closely instead of sticking to the original transcript pacing
  • The three-column editor now compresses more cleanly on laptop-sized screens with earlier desktop breakpoints, slimmer rails, and tighter header spacing
  • Exports that use the AI voiceover track now keep subtitle timing aligned with the same retimed voiceover pacing shown in the editor preview
  • Active click-on-video tools now show a small cursor-following label so Zoom, Blur, Text, Spotlight, and Clip modes are easier to understand at a glance
  • Very small screens now get a dedicated brutalist blocker screen instead of a broken compressed editor layout
  • Turning on AI voiceover now automatically mutes the original video audio so preview playback doesn’t double up both tracks
  • Removed cut sections now use a much stronger red treatment in the main timeline so deleted areas are easier to spot instantly
  • Refreshing or importing a saved edit now restores timeline items without re-arming Text, Clip Position, or other click-on-video tool buttons
  • Landing page uploads now open videos directly in the editor instead of bouncing through the recording setup flow
  • Uploading the same video again now restores its saved edit state more reliably by using a stable upload source key
  • Background selection now includes animated dynamic backgrounds and custom gradients with editable palettes, live preview, and export support
  • Landing page video uploads now initialize their local editor backup store correctly instead of failing on older saved browser schemas
  • Clip-position moves now stay clipped inside the composition area so sliding the video left or right reveals the background instead of spilling off the frame
  • Background-framed uploads now fit their clip box more cleanly again instead of showing a stray black strip beneath the video content
  • Videos without a background now stay centered in the preview too, so uploaded clips no longer shift left unless a background wrapper is active
  • Rounded clip corners now render cleanly again after clip-position moves instead of showing dark clipped wedges around the frame
  • Text overlays now support a new Corner Wrap layout that can hug a clip corner and flow from one frame edge onto the next
  • Corner-wrapped text now uses a dedicated edge-following layout path in both the editor preview and export rendering
  • Corner-wrap text now rides the outside edge of the clip with a real curved corner path instead of floating away from the frame
  • The text overlay popover now includes corner-wrap controls for layout mode, corner, inset, band thickness, and edge spans
  • The text overlay editor panel now floats above the preview in a portal so it no longer gets tucked behind clip borders or composition effects
  • Corner-wrap text panels now avoid the attached edge better by opening on the opposite side of right-edge and left-edge corner text
  • Corner-wrap text can now be dragged around the clip edge directly, with the layout staying attached to the frame instead of behaving like a floating box
  • Text overlay dropdown menus now open above the floating editor panel instead of slipping behind it
  • Corner-wrap text now follows the clip’s live tilt better and moves with a simpler forward/back progress model instead of buggy 2D edge dragging
  • Left-side corner-wrap text now starts on the chosen top or bottom border before curving onto the side, instead of appearing inverted
  • Top and bottom corner-wrap modes now travel along the visible upper or lower perimeter instead of unexpectedly dropping onto the wrong edge
  • Corner-wrap text now avoids a double-transform bug so it stays on the visible clip bounds instead of drifting toward the preview container edge
  • Corner-wrap text now uses the clip’s original layout box plus the same live transform as the video, so tilted clips keep the border text aligned to the apparent frame
  • Corner-wrap selections now show a dashed border path instead of a rectangular box so the guide follows the same clip edge as the text
  • Corner-wrap text and its dashed guide now project through the clip’s live transform point-by-point so tilted frames keep the path much closer to the rendered border
  • Fresh corner-wrap overlays now start from the selected corner instead of halfway around the frame path, so basic top-left and top-right layouts land where you expect
  • Corner-wrap text now starts from the chosen top or bottom edge again and wraps around the border run with the curved path, instead of collapsing back into straight box lanes on flat clips
  • Corner-wrap preview now uses an SVG textPath probe in the editor so border-following text can be tested against the actual rounded clip perimeter before the full feature is rebuilt
  • The SVG corner-wrap probe is now pinned closer to the actual clip border and temporarily locks to the selected corner so old progress offsets no longer throw the preview off while the new path behavior is being validated
  • The SVG corner-wrap probe now lowers text onto the border path itself and restores wheel-based movement around the full loop so the preview is easier to judge before the full rebuild
  • The SVG corner-wrap probe now follows the clip’s actual rounded-rectangle border shape again instead of an over-inset custom curve, so the right-hand corner tracks the real frame more closely
  • Corner-wrap text effects now render from the same rounded-border character path in both preview and export so typewriter, elastic, and explode-style motion stay visually consistent
  • Corner-wrap text now rides just outside the clip border again instead of sitting on top of the frame after the preview/export parity rebuild, with a little more breathing room from the edge
  • The Explode text preset now strongly implodes on entry and truly blasts characters outward on exit
  • Delete confirmation dialogs now always stack above floating editor popovers so destructive actions stay unmistakably on top
  • Clicking a timeline layer that is currently off-screen in the preview now pauses playback and jumps slightly inside that layer so animated edits are visible right away instead of landing on the first hidden frame
  • The center play button stays clickable even while overlay editors are open, so resuming playback feels more direct
  • Text overlays stop acting draggable during playback, and clicking the preview while text is selected now pauses cleanly instead of getting trapped by edit-mode selection
  • Text overlay popovers now open only when you click the text itself or its timeline block, instead of stealing clicks from empty preview space just because the playhead is inside that text segment
  • Detected beat markers now stay clipped inside the music timeline instead of hanging past the right edge and triggering a horizontal scrollbar
  • Pressing play from a deleted tail section or raw video end now jumps back to the first playable kept frame instead of trying to resume inside removed footage
  • Text overlay dropdowns now stay flush to their left or right columns instead of drifting inward when shorter option labels are selected
  • Freeform text overlays now use a touch more letter spacing in preview and export so bold headlines feel less cramped
  • The Freeform 'Drag on preview' helper now matches the neighboring text dropdown height so that control row feels cleaner
  • Freeform text overlays now animate correctly again with Elastic and Explode-style character motion in both preview and export instead of falling back to static text
  • Exports now keep freeform text anchored to the same composition space as the preview, and corner-wrap text follows clip offsets and tilt more closely instead of snapping to a flat frame
  • Glass borders now export with a thickness that better matches the editor preview instead of shrinking noticeably in the final render
  • Exports now respect the clip’s real contained frame size before applying tilt, offsets, borders, and text sizing, so moved or tilted scenes line up more closely with the preview
  • Clip tilt perspective now scales with the rendered frame size so the same clip-position settings read more consistently in the editor preview, fullscreen preview, and export
  • Tilted exports now keep corner-wrap text spacing steadier and push glass borders outward so both read closer to the editor preview
  • Tilted corner-wrap text now uses a denser export projection mesh so border text hugs the preview perspective more closely near the outer edges
  • Tilted corner-wrap exports now warp each wrapped text overlay through its own clip-aligned projection plane so perspective stays closer to the preview without the earlier batch offset drift
  • Tilted corner-wrap exports now use a much denser per-overlay projection grid so wrapped text stays tighter to the clip edge near steep corners
  • Tilted clips with corner-wrap text now export as one combined clip scene before projection, so the video, glass border, and wrapped text share the same 3D warp model
  • Tilted clip exports now keep the clean glass border and clip edges while corner-wrap text warps on a full clip-based text plane, which keeps the perspective closer to the preview without the earlier border artifacts
  • Tilted corner-wrap exports now use the full glass-border footprint as the transformed text plane so wrapped text sits a bit closer to the same perspective span as the preview
  • Wrapped border text in exports now uses the same larger glass-border frame box as the preview, helping tilted corner text stay tighter to the visible edge
  • Videos now fade in and out more gracefully, with background scenes bringing the backdrop in before the clip and preview/export audio fading with the opening and closing beats
  • Scene fades can now be turned on or off from the editor settings when users want clean hard cuts instead
  • Older saved text overlays now pick up sensible defaults for the new corner-wrap settings instead of breaking on refresh or import

v2.17.0

Full Video Export with All Effects

Added9 items
  • Export settings dialog with resolution, encoding quality, compression, and audio track options
  • Optional FFmpeg Web compression pass for smaller MP4 exports
  • Export pipeline now renders ALL editor effects into the final MP4
  • Per-frame compositing: background, clip position, zoom, spotlight, blur, text overlays, subtitles
  • Audio mixing: background music clips at correct timestamps with per-clip volume
  • TTS voiceover support: replaces video audio with generated voiceover in export
  • ExportConfig — single config object for all editor state, AI-agent callable
  • lib/export-drawing.ts — drawExportFrame() pure function for per-frame compositing
  • lib/export-audio.ts — mixAudioWithMusic(), applyEdgeFades(), decodeTTSBlob()
Changed6 items
  • exportWithCuts() accepts full ExportConfig instead of just cuts + zoom
  • Export pipeline is a pure function — callable by AI agents as a tool
  • Export resolution can now match original, 1440p, 1080p, 720p, or 480p while preserving aspect ratio
  • Encoded output now supports high and very-high quality presets before optional compression
  • Timeline effect bars now show clearer hold and animation boundaries so inner and outer areas are easier to distinguish
  • Timeline edits now auto-save and restore for the current edit session so refresh keeps your latest work
Fixed5 items
  • Exported videos now preserve clip tilt, floor reflections, and spotlight reflections much closer to the timeline preview
  • Skipped subtitle ranges now cut the exported timeline correctly while hidden subtitles stay excluded from burn-in
  • Text overlay animation timing and TTS/original audio selection now export more accurately
  • Text timeline resizing now updates the full text in/hold/out span correctly so preview timing matches the editor controls more closely
  • Blur overlays now stay attached to the tilted clip so the blurred screen area tilts with the video instead of staying flat

v2.16.0

3D Shadow & Reflection

Added6 items
  • 3D floor shadow beneath the tilted video clip — radial gradient ellipse that scales with tilt angle
  • Floor reflection — mirrored video with gradient mask fade-out, blur softening, and opacity scaling
  • ON/OFF toggle in the Settings sidebar tab for 3D Shadow & Reflection
  • Shadow and reflection intensity increase with tilt magnitude for natural depth effect
  • Shadow skew follows the Y-axis tilt direction for perspective-accurate positioning
  • Reflection syncs with main video source for real-time mirrored content
Changed3 items
  • Shadow and reflection only appear when clip is tilted and a background is active
  • Reflection setting included in preset export/import
  • All shadow/reflection rendering is imperative DOM (RAF-driven, same loop as clip position) for 60fps performance
Fixed1 item
  • Spotlight reflections now mirror the border glow much closer to the popout edge, matching the legacy preview more closely

v2.15.0

Preset Export & Import

Added5 items
  • Export all editor edits as a JSON preset file — saves cuts, zoom, blur, spotlight, text, clip position, background, music clips (with track info), subtitle segments + style
  • Import preset from JSON file — restores all editor state including music clips with track references
  • Export and Import buttons in the timeline stats bar, next to segment/duration info
  • Duration compatibility check — warns if preset was made for a different video length
  • Preset includes version field for future format migrations

v2.14.0

AI Voiceover (TTS)

Added12 items
  • AI voiceover generation using Kokoro-82M (client-side via kokoro-js — no server required)
  • 11 voices across 4 categories: American Female (5), American Male (2), British Female (2), British Male (2)
  • Speed control: 0.5x to 2.0x with 0.1x steps
  • Per-segment generation with progress tracking (X/Y segments)
  • Timeline composition: places each segment's audio at its correct timestamp into a single WAV
  • Full voiceover preview playback and WAV download
  • Per-segment test: sparkles icon on each transcript segment generates + plays audio for that line
  • Test audio cached per text — instant replay without regeneration
  • Staleness detection: warns when transcript changes after voiceover generation
  • Video sync: 'Use as voiceover' toggle syncs TTS audio to video playback
  • Voice picker grouped by accent with gender indicators and selection checkmark
  • VoiceoverPanel in Subtitles sidebar tab — voice selection, speed, generate/cancel/preview/download controls
Changed3 items
  • Subtitles tab now shows three sections: Transcript editor, Voiceover controls, Subtitle style config
  • Each transcript segment row now has a sparkles icon for per-segment TTS preview
  • All voiceover UI uses theme tokens — fully themable

v2.13.0

AI Subtitles

Added13 items
  • AI-powered subtitle generation using Whisper (client-side via Transformers.js — no server required)
  • Three model sizes: Tiny (75MB), Base (150MB), Small (500MB) — choose speed vs accuracy
  • 82 languages supported — full Whisper language set from English to Sundanese
  • Word-level timestamp highlighting — active word highlighted in real-time as video plays
  • Two display modes: Phrase (multiple words with active highlighted) and Word (single word at a time)
  • Three position options: Top, Middle, Bottom with visual position indicators
  • 18 subtitle fonts: Poppins, Bebas Neue, Archivo Black, Bungee, Bangers, Anton, and more
  • Full style customization: font size (100-250%), text color, active word color, background toggle, border, shadow, border radius, max words per line
  • Transcript editor in Subtitles sidebar tab — editable text, click timestamp to seek, hide/skip segments
  • Streaming transcription — partial results appear as Whisper processes each 30-second chunk
  • WebGPU acceleration with WASM fallback — auto-detects best device
  • CSS-based subtitle rendering with RAF-driven word highlighting for 60fps performance
  • Model caching — Whisper model stays loaded in Web Worker memory between transcriptions
Changed3 items
  • Editor sidebar now has three tabs: Settings, Music, Subs
  • Subtitle segments use serializable plain objects for JSON preset export/import
  • All subtitle UI uses theme tokens — fully themable

v2.12.0

Music Timeline & Beat Detection

Added11 items
  • Music timeline track — click '+' on any song in the browser to add it to the video timeline at the current playhead position
  • Multiple songs can be added to the same timeline, each as a separate clip showing its track name
  • Cut mode — click scissors then click on a clip to split it into two at that point
  • Drag clips to move along the timeline with snap-to-beat support (0.1s threshold)
  • Resize clip edges (left/right handles) to trim or extend with 0.2s minimum duration
  • Per-clip volume slider when a clip is selected, with visual volume indicator bar on each clip
  • Beat detection — energy-based onset detection with low-pass filter, peak picking, tempo estimation, and downbeat classification
  • Beat guide lines on the music timeline — shows top 15% strongest beats as vertical markers
  • Clip dragging snaps to detected beats for precise alignment
  • MusicClip stores trackId, trackName, filename so multiple different songs can coexist on the timeline
  • Overlap detection prevents clips from overlapping each other
Changed14 items
  • Music browser track rows now show a '+' button on the right to add songs to the timeline
  • Music clips use serializable plain objects for JSON preset export/import
  • Music timeline uses chart-3 color theme (distinct from spotlight chart-4 and clip chart-5)
  • Songs trimmed to fit within video duration — timeline length always matches video length
  • First clip always starts at time 0, subsequent clips placed after existing ones or at playhead
  • Red borders on music clips for clear visual separation between adjacent songs
  • Songs already on the timeline are highlighted with green tint in the music browser
  • Music plays in sync with video — switches between tracks at clip boundaries, mutes between clips
  • Resize-end clamped to video duration and source track length
  • Waveform rendering interpolates across full clip width for clean visualization regardless of clip/track ratio
  • Waveforms fetched in parallel per unique track with inflight dedup to avoid redundant requests
  • Simplified music browser — removed track selection, kept preview + add-to-timeline workflow
  • 5 new energetic tracks: Horizon Shatter, Skyforge Siege, Iron Anvil Summit, Thunder Over Ulaanbaatar, Stormrider Ascent
  • Total music catalog: 171 tracks across 5 categories

v2.11.0

Background Music Browser

Added8 items
  • Background music browser in the editor sidebar — 166 tracks across 5 categories (Energetic, Chill, Cinematic, Electronic, Ambient)
  • Category filter pills to browse tracks by mood
  • Track preview playback with play/stop, seek bar, and volume control
  • Selected track panel with now-playing indicator and animated equalizer bars
  • Music tab in the editor sidebar alongside Settings tab, matching legacy layout
  • Track selection persisted to localStorage across sessions
  • Music files served from Cloudflare R2 CDN (screenslick-music bucket) with local fallback for development
  • Green dot indicator on Music tab when a track is selected
Changed2 items
  • Editor sidebar now has two tabs (Settings / Music) with active tab highlighting using primary color
  • All music UI uses theme tokens — no hardcoded colors

v2.10.0

Editor Backgrounds

Added10 items
  • Background presets in the video editor — 17 HD backgrounds + custom upload, same presets as the recording studio
  • Composition frame with CSS-based live preview: background image, padding, border radius, drop shadow, glass border, and background blur
  • Collapsible Background settings panel below timeline controls with preset grid and sliders
  • Padding slider (0-50%) — creates space around the video within the composition frame
  • Border radius slider (0-50%) — rounded corners on the video clip
  • Shadow intensity slider (0-100%) — drop shadow beneath the clip (only visible with padding)
  • Background blur slider (0-40px) — blur filter applied to the background image
  • Glass border slider (0-20px) — subtle frosted glass border effect around the clip
  • Custom background upload with automatic 7% padding on first use
  • Reuses existing BackgroundPicker component from recording studio — shared code, no duplication
Changed3 items
  • Video area uses composition frame structure: background layer → padded clip container → rounded clip frame → video element
  • Clip position transforms applied to the clip container inside the composition frame
  • Background settings use the existing BackgroundSettings type from types/recording.ts

v2.9.0

Clip Position & Tilt

Added12 items
  • Clip position segments — click Clip button then click on video to add a position keyframe at the playhead
  • 2D drag pad component (Position and Tilt) with snap-to-center, double-click reset, crosshair highlights, and companion X/Y sliders
  • Position offset: move the video clip -50% to +50% in X and Y within the composition frame
  • 3D tilt: perspective(800px) + rotateX/Y for diagonal perspective effect (-45 to +45 degrees)
  • 6 entrance/exit animations: none, fade, slide from left/right/top/bottom with easeOutCubic/easeInCubic
  • Clip position timeline track with easeIn/hold/easeOut visualization and 5 drag handle types
  • Floating controls with edit button, entrance/exit animation pickers, and delete
  • Editor popover with dual drag pads (Position + Tilt), animation selectors, and duration slider
  • Clips Only toggle — when enabled, video is hidden between clip position segments (opacity 0)
  • RAF-driven CSS transforms applied imperatively to the video container for 60fps preview
  • Overlap detection prevents placing clip segments on top of each other
  • Clip position segments use serializable plain objects for JSON preset export/import
Changed2 items
  • All effect modes (zoom, blur, text, spotlight, clip position) are mutually exclusive
  • DragPad2D is a reusable themable component in components/ui/ — uses CSS variables for all colors

v2.8.0

Spotlight Effects

Added18 items
  • Spotlight effects — draw a rectangle on the video to create a cinematic spotlight with dim, zoom, and 3D popout
  • Canvas-based popout that samples and magnifies the spotlight region from the video in real time
  • Two-level zoom: global zoom pans the entire video toward the spotlight, popout scale magnifies the highlighted area
  • 3D tilt effect with perspective, translateZ depth lift, and diagonal rotateX/rotateY matching legacy
  • 6 border effects: none, clean border, subtle glow, strong glow, traveling light, neon pulse
  • Traveling light uses CSS @keyframes animation on @property --spotlight-angle for smooth conic-gradient rotation with mask-composite border strip
  • Neon pulse uses CSS @keyframes opacity animation for smooth pulsing glow
  • Adjustable dim opacity (0-100%) controls how dark the area outside the spotlight gets
  • Adjustable tilt angle (0-30 degrees) for perspective depth effect
  • Zoom scale presets (1.1x, 1.2x, 1.3x, 1.5x) with coupled popout magnification
  • Border effect picker in floating timeline controls
  • Draw-on-video to place new spotlight regions, edit mode to reposition existing ones
  • Spotlight timeline track with easeIn/hold/easeOut visualization and 5 drag handle types: move, resize outer start/end, resize inner hold boundaries
  • Two-phase easing animation: zoom leads, popout follows with overlap on ease-in; popout fades first, zoom follows on ease-out to prevent double-image artifacts
  • Overlap detection prevents placing spotlights on top of each other in the timeline
  • Auto-fit timing squeezes new spotlight duration to fit available timeline space
  • Spotlight global zoom composes with regular zoom keyframes for combined transforms
  • Canvas export rendering with dim overlay, popout content, depth shadow, and all 6 border effects
Changed4 items
  • Zoom, blur, text, and spotlight modes are all mutually exclusive — enabling one disables the others
  • Spotlight overlay coordinates adjusted for CSS zoom so popout aligns with zoomed video content
  • Border effects render during both playback and editing (wall-clock animation, not video-time dependent)
  • Spotlight effects use serializable plain objects for JSON preset export/import compatibility

v2.7.0

Text Overlays

Added13 items
  • Text overlays — click Text button then click on video to place styled text
  • Full editor popover: font picker (38 Google Fonts), animation preset (13 types), font size, duration, ease in/out, border, shadow, colors
  • 13 animation presets: none, fade, fade-in/out, slide up/down/left/right, zoom in/out, pop, typewriter, elastic
  • Drag text overlays to move with snap-to-center guides (horizontal + vertical green dashed lines)
  • Resize text overlays from all 4 corners with proportional font scaling (text grows/shrinks with box)
  • Text auto-wraps and auto-shrinks font to fit within the box, matching legacy layout system
  • Text timeline track with blocks spanning hold duration only (ease in/out don't affect block length)
  • Dual-thumb In/Out slider for controlling entry and exit animation durations simultaneously
  • Dynamic Google Fonts loading — all 38 fonts preloaded when editor popover opens
  • Text stroke (border) and drop shadow with adjustable opacity
  • Draggable editor popover with grip handle
  • Text, zoom, and blur modes are all mutually exclusive
  • Per-character elastic animation with staggered sine wave bounce matching legacy exactly
Changed4 items
  • Text overlay outline, resize handles, and popover hidden during playback for clean animation preview
  • Font picker previews each font in its actual typeface at default weight
  • Text stroke uses paint-order: stroke fill so borders render outside the text instead of eating into it
  • Font grid layout gives more space to font name column to prevent overlap with animation dropdown
Fixed7 items
  • Google Fonts loading split into default weight (picker preview) and bold weight (overlay rendering) to fix single-weight display fonts like Bungee, Righteous, Anton not rendering correctly
  • Font loading batched in groups of 8 with deduplication to avoid URL length limits and duplicate requests
  • Color picker debounced to prevent lag when dragging — no unnecessary useEffect for state sync
  • Text overlay animations now match legacy exactly — easeIn before startTime, easeOut after hold end
  • Fullscreen mode now hides timelines and controls so video fills the screen without UI overlay
  • VideoPlayer refactored from 885 to 392 lines — extracted BlurOverlay and TextOverlayRenderer into separate components following Vercel React best practices
  • Elastic animation uses per-character staggered sine wave bounce with global sequence index across lines

v2.6.0

Blur Regions

Added8 items
  • Blur regions for privacy — draw a rectangle on the video to blur sensitive areas
  • Three blur types: pixelation (most secure), gaussian, and frosted glass
  • Adjustable intensity slider (0-100%) per blur region
  • Blur timeline track with draggable blocks and resize handles
  • Floating controls on selected blur: edit position, blur type picker, intensity slider, delete
  • Live blur preview on video using CSS backdrop-filter
  • Canvas-based blur rendering for accurate export (applyBlurEffect with temp canvas pipeline)
  • Blur and zoom modes are mutually exclusive to prevent accidental interactions

v2.5.0

Zoom Keyframes

Added8 items
  • Zoom keyframes — click Zoom button then click on video to set zoom target point
  • Smooth easeOutQuad zoom transitions with configurable ease-in, hold duration, and ease-out
  • Zoom timeline track below cut timeline with draggable keyframe blocks
  • Scale picker (1.5x, 2x, 2.5x) and pan repositioning via floating controls on selected keyframe
  • 5 drag handles per keyframe: move, resize ease-in/out, trade ease-in/hold, trade hold/ease-out
  • Live zoom preview on video via CSS transform with RAF-driven updates
  • Zoom applied during export via canvas crop for pixel-perfect output
  • Overlap prevention between zoom keyframes
Changed4 items
  • Zoom button shows 'Click on video' when active, matching legacy UX flow
  • Zoom timeline stays visible once keyframes exist, never hides
  • Floating zoom controls positioned above each keyframe block (not centered on timeline)
  • Floating controls auto-hide after 3s with fade, dismiss on outside click

v2.4.0

Cut Timeline, Silence Detection & Export

Added10 items
  • Cut segment timeline with time ruler, waveform visualization, and draggable playhead
  • Slice button — splits video at playhead position with visual flash feedback
  • Click segments to select, then delete, mute, or change speed (0.5x-4x)
  • Drag cut point handles to adjust segment boundaries, double-click to remove cuts
  • Segment-aware playback: skips deleted segments, applies per-segment speed and mute
  • Silence detection — auto-detect and remove silent regions with configurable threshold (0.3s-2.0s)
  • Timeline stats bar showing segment count, removed count, silence count, and output duration
  • Export with cuts — renders final MP4 via MediaBunny with deleted segments removed, speed applied, and muted segments silenced
  • Export progress bar with cancel support
  • Shared Footer component with Transformers.js and MediaBunny attribution
Changed2 items
  • Editor timeline replaced wavesurfer.js with custom canvas-based waveform for full segment rendering control
  • Changelog page restyled with clean brutalist layout, removed GitHub link
Fixed5 items
  • Beep timer now plays a confirmation beep on start to unlock AudioContext within user gesture
  • Beep timer switched to setInterval pattern matching legacy app for reliable minute-boundary detection
  • Beep timer cleans up its own interval and AudioContext on unmount, preventing memory leaks
  • Oscillator and GainNode instances now disconnect after playback to free audio graph resources
  • Audio detection defaults to true when browser APIs cannot confirm audio track presence

v2.3.0

Custom Video Player with Waveform Timeline

Added8 items
  • Custom video player on /edit with wavesurfer.js audio waveform timeline
  • Play/pause toggle via click on video or button
  • Seekable audio waveform — click or drag to scrub through the recording
  • Volume slider with mute toggle, persisted to localStorage
  • Fullscreen mode for video player with waveform and controls
  • Time display with smooth requestAnimationFrame updates
  • Download button in player controls
  • Keyboard shortcuts: Space (play/pause), M (mute), F (fullscreen), arrow keys (seek)
Changed2 items
  • Editor page now uses custom video player instead of native HTML5 controls
  • Editor components extracted into dedicated module (components/editor/)

v2.2.0

Recording Studio & Editor Route

Added19 items
  • Recording Studio at /record-studio with 4 modes: Screen Demo, Screen + Camera, Screen Only, Camera Only
  • Live canvas compositing with camera overlay, backgrounds, and watermarks
  • Camera overlay with configurable position, border radius, border, and shadow
  • Background presets with padding, border radius, and glass border effects
  • Watermark upload with position, size, and opacity controls
  • Microphone toggle with real-time audio level meter
  • Countdown timer (3s/5s) with audio beeps
  • Beep timer — plays N beeps every N minutes during recording
  • 17 background presets with HD images and thumbnails from legacy app
  • Reusable BackgroundPicker component (shared between studio and editor)
  • Reusable background data module (lib/backgrounds.ts)
  • Placeholder /edit route with video playback and download
  • Automatic recording backup storage now keeps the latest recording recoverable after a refresh
  • Recording Studio can save completed recordings to a chosen folder using the File System Access API
  • Recording Studio now exports browser recordings as MP4 through MediaBunny instead of relying on MediaRecorder WebM output
  • Full i18n support for Recording Studio and Editor (EN/ES)
  • TooltipProvider added to root layout
  • Theme toggle in recording studio header
  • Recording Studio now supports MediaPipe hand gestures with a top-bar legend and live preview feedback
Changed8 items
  • Aspect ratio selection moved to editor (record at native resolution)
  • Recording navigates to /edit after stopping instead of inline preview
  • Recording controls positioned directly below video preview
  • Recording mode cards now show the same demo vs standard quality presets as the legacy recorder
  • Select dropdowns in right sidebar open toward left to prevent overflow
  • Studio header simplified — removed back button, added theme toggle
  • Recording Studio camera controls now include overlay, left, right, top, and bottom layouts
  • Recording Studio format, layout, and camera position controls now sit above the preview like the legacy recorder
Fixed14 items
  • Camera overlay can be resized directly from the preview with a drag handle
  • Color picker, background controls, and accordion expansion feel much smoother in Recording Studio
  • Recording timer beeps now fire exactly on each elapsed minute and increase with the minute count
  • Background and camera sliders now preview changes live while you drag in Recording Studio
  • Side and top/bottom camera layouts now share the legacy background radius, shadow, glass border, and panel spacing behavior
  • Glass border framing for large camera layouts now renders outside the panels like the legacy recorder
  • Left and right camera layouts now keep the shared screen fully framed instead of cropping the sides into a squarer panel
  • Screen Demo now records with the legacy 1440p/60fps preset while the standard modes keep the legacy 1080p/30fps preset behavior
  • Screen Demo recordings now preserve the intended higher quality instead of falling back to a lower-quality MediaRecorder encode
  • Recording Studio MP4 captures now keep updating video frames correctly while recording instead of appearing frozen on the first frame
  • Recording Studio composited captures now match the legacy shared-screen draw path and panel sizing more closely so text stays cleaner
  • Glass borders around composited panels now sit farther outside the visible screen content instead of visually biting into the page
  • Recording Studio audio now stays much cleaner while the studio tab is open by avoiding full-page mic meter rerenders during recording
  • Recording Studio now lets you reselect your shared screen from the right sidebar if sharing stops
Added7 items
  • Added a Recording Studio option to enable or disable the per-minute reminder beeps
  • Coming soon placeholder page with email waitlist (Loops.so integration)
  • Configurable via NEXT_PUBLIC_COMING_SOON env variable
  • Debounced color picker component for smooth camera border color selection
  • Camera size slider (10-50%) in settings sidebar
  • ScreenSlick brand name shown in recording studio header
  • Studio settings persist to localStorage and restore on return
Changed6 items
  • Camera roundness slider now goes 0-100% (100% = fully circular)
  • Camera default: 100% roundness, 4px border, 30% shadow — matching legacy
  • Border color picker only shown when border width > 0
  • Background thumbnails now use 3-column grid with light grey borders
  • Removed disclaimer text under hero CTA buttons on landing page
  • Backup folder label renamed to 'Save To' for cleaner sidebar layout
Fixed34 items
  • Camera drop shadow now renders correctly (was using transparent fill)
  • Camera roundness at max now produces a fully circular bubble
  • Sonner toast notifications now show colored backgrounds for error/success
  • Permission denied errors for camera, mic, and screen now show toast notifications
  • File System Access API types fixed for TypeScript strict mode builds
  • Screen text stays sharp in side-by-side layouts (smart smoothing for downscaled content)
  • Canvas matches source resolution 1:1 during preview for pixel-perfect sharpness
  • Canvas resizes to recording resolution before MediaBunny encoder initializes
  • AudioContext uses playback latency hint and auto-resumes on tab switch to prevent audio drops
  • Shared screen panels no longer show unintended black bars when padding or alternate canvas ratios are active
  • Stacked camera layout (top/bottom) now matches the screen panel width instead of stretching full-width
  • Stacked top/bottom camera layouts are centered again with the same tight 4px gap used in the legacy recorder
  • Aspect ratio picker (16:9, 9:16, 1:1) added above the recording preview
  • Preview container dynamically adjusts shape to match selected aspect ratio
  • When screen sharing stops, a 'Select Screen' button appears over the preview instead of stretching the camera
  • Preview container border thinned from 4px to 2px
  • Portrait overlay and stacked layouts now prioritize the shared screen like the legacy recorder instead of cropping it to the canvas
  • Available camera layouts now switch by aspect ratio so portrait only shows portrait-friendly options while landscape and square keep side layouts
  • Camera moves and layout changes now animate with an elastic transition instead of snapping in place
  • Footer shown on recording studio mode selection screen
  • Portrait recordings on the /edit preview page now stay viewport-bounded so the video player controls remain visible without awkward scrolling
  • Recording Studio now tears down old screen-share sessions when you switch modes, re-pick a screen, or leave the studio so browser share banners do not stack up
  • Recording Studio live previews no longer turn black after selecting sources because active camera and screen streams are no longer cleaned up during normal rerenders
  • Wide shared screens rendered in the 9:16 stacked layout now sit centered within the portrait canvas instead of sticking to the top edge
  • Recording Studio now shows loading feedback while the browser opens the screen picker and while camera or microphone devices are starting up
  • Camera resize handles now sit closer to the overlay corner and use a clearer drag icon in the live preview
  • The stopped-sharing prompt is now centered and only appears in modes that actually need a shared screen
  • Prisma client uses dynamic require() so the app builds without a database
  • Camera overlay can now be resized independently in width and height (drag to make thinner or wider, matching legacy)
  • Resize handle icon replaced with expand/contract arrows
  • Camera resize drag direction fixed to match legacy (drag away from camera to grow)
  • Screen source renders at native aspect ratio inside any canvas format — no stretching
  • Format/layout toolbar pinned at top of preview area so it stays fixed when aspect ratio changes
  • Dark mode init script updated for Next.js 16 Turbopack compatibility

v2.1.0

Landing Page & Changelog Overhaul

Added6 items
  • Ported landing page copy from legacy BSR with full i18n support (EN/ES)
  • Hero section with badges, bold headline, and feature cards
  • 6 feature sections: AI Subtitles, AI Voiceover, Editing, Recording Modes, Customize & Export, Privacy
  • Brutalist CTA buttons with offset shadow animation
  • Changelog data file with typed structure
  • Changelog nav link in landing page header
Changed2 items
  • Landing page fully uses theme tokens — no hardcoded colors
  • Changelog page now reads from lib/changelog.ts data file

v2.0.0

ScreenSlick v2 — Complete Rewrite

Added9 items
  • Complete v2 rewrite with modern stack
  • Prisma 7 integration with PostgreSQL
  • Better Auth with Google OAuth
  • Internationalization (English & Spanish)
  • New landing page with features section
  • Protected dashboard with user sessions
  • shadcn/ui component library
  • Brutalist design system
  • Light and dark mode support